服务器准备

192.168.110.177  主服务器 master

192.168.110.178  从服务器slave

修改主(master)服务器

vi /etc/my.cnf  新增以下内容

server_id=177  ###服务器id

log-bin=mysql-bin   ###开启日志文件

重启服务器

service mysqld start

service iptables stop

 

主服务器给从服务器账号授权

GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';

//一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

 

登录主服务器的mysql,查询master的状态

show master status;

 

如果结果为null,则主服务器my.cf没有配置好.

 

修改从(slave)服务器

server_id=178

log-bin=mysql-bin

binlog_do_db=test

 

change master to master_host='192.168.110.177',master_user='mysync',master_password='q123456',

         master_log_file='mysql-bin.000002',master_log_pos=343;

 

启动同步

start slave

 

检查从服务器复制功能状态

SHOW SLAVE STATUS

 

 

 

 Slave_IO_Running: Yes    //此状态必须YES
Slave_SQL_Running: Yes     //此状态必须YES

读写分离

什么是读写分离

在数据库集群架构中,让主库负责处理事务性查询,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能。当然,主数据库另外一个功能就是负责将事务性查询导致的数据变更同步到从库中,也就是写操作。

读写分离的好处

 1)分摊服务器压力,提高机器的系统处理效率

    读写分离适用于读远比写的场景,如果有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能并不高,而主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;

   假如我们有1主3从,不考虑上述1中提到的从库单方面设置,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,说白了就是拿机器和带宽换性能;

  2)增加冗余,提高服务可用性,当一台数据库服务器宕机后可以调整另外一台从库以最快速度恢复服务

 

主从复制原理

 依赖于二进制日志,binary-log.

 二进制日志中记录引起数据库发生改变的语句

  Insert 、delete、update、create table

Scale-up与Scale-out区别

Scale Out是指Application可以在水平方向上扩展。一般对数据中心的应用而言,Scale out指的是当添加更多的机器时,应用仍然可以很好的利用这些机器的资源来提升自己的效率从而达到很好的扩展性。

Scale Up是指Application可以在垂直方向上扩展。一般对单台机器而言,Scale Up值得是当某个计算节点(机器)添加更多的CPU Cores,存储设备,使用更大的内存时,应用可以很充分的利用这些资源来提升自己的效率从而达到很好的扩展性。