级联复制模式

  由于在主从复制模式中主数据库的连接数是有限的,按照通用准则,在主服务器接近满载时,不应该为其建立10个以上的从库。一个好的方式是在主库与从库之间设置多个分发主库,移除主库的负载压力。分发主库的作用就是为从库提供主库的二进制日志。

  我在配置主从服务器时,使用了两台服务器:10.19.34.126、10.19.34.127、10.19.34.91、10.19.34.92。其中10.19.34.126为master、10.19.34.127为repl、10.19.34.91为slaveA、10.19.34.92为slaveB。

  1、在master上安装mysql服务器。

  2、设置master的my.conf文件:

log-bin= mysql-bin                #所有的数据操作写入二进制日志,便于将sql语句同步到中继日志
lserver-id=1

  3、在master上创建从库同步master数据的账号:

    MySQL>grant all on *.* to 'root'@'%' identified by '123456';

  4、在repl数据库上设置my.conf文件:

log-bin= mysql-bin                #所有的数据操作写入二进制日志,便于将sql语句同步到中继日志
log_slave_updates=1             #该参数用来设置将中继日志中的操作传入二进制日志,以便于该从数据库作为其他实例的主库。
replay_log=mysql-replay-bin   #用来存储中继日志
server-id=2

  5、在master数据库上查看呢二进制文件的更新点:

    MySQL> show master status;

    

  6、在repl上创建从库同步repl数据的账号:

    MySQL>grant all on *.* to 'root'@'%' identified by '123456';

  7、在repl数据库上设置同步master数据库的同步点: 

    MySQL> stop slave;

    MySQL> CHANGE MASTER TO MASTER_HOST="10.19.34.126",MASTER_USER="root",MASTER_PASSWORD="123456",MASTER_PORT=3306,MASTER_LOG_FILE="mysql-bin.000003",MASTER_LOG_POS=393044781,MASTER_CONNECT_RETRY=10;

    MySQL> start slave;

  8、在slaveA和slaveB上设置my.conf文件:

    slaveA的my.conf:

log-bin= mysql-bin                #所有的数据操作写入二进制日志,便于将sql语句同步到中继日志
replay_log=mysql-replay-bin   #用来存储中继日志
server-id=3

    slaveB的my.conf:

log-bin= mysql-bin                #所有的数据操作写入二进制日志,便于将sql语句同步到中继日志
replay_log=mysql-replay-bin   #用来存储中继日志
server-id=4  

  9、查看repl的二进制文件的更新点:

  MySQL> show master status;

  

  10、在slaveA和slaveB上设置从repl的同步点:

    MySQL> stop slave;

    MySQL> CHANGE MASTER TO MASTER_HOST="10.19.34.127",MASTER_USER="root",MASTER_PASSWORD="123456",MASTER_PORT=3306,MASTER_LOG_FILE=" mysql-bin.000004",MASTER_LOG_POS=393044425 ,MASTER_CONNECT_RETRY=10;

    MySQL> start slave;

过滤复制模式

    过滤复制可以将整个数据中心通过对数据的过滤,同步到不同的从数据库上,使客户端对数据的请求负载得到分散,并且在同步数据时,每个从库只同步部分数据,在一定程度上提高了主库的能力。例如在主数据库上保存着整个数据中心的数据,为了分担主数据库的压力,每个从库只同步部分数据,可以将读请求分散到从数据库。

   1、过滤模式的服务器:10.19.34.126为master(包含user、department、message三个数据库)、10.19.34.127为slaveA(只同步user数据库)、10.19.34.91为slaveB(只同步department数据库)、10.19.34.92为slaveC(只同步message数据库)。

   2、过滤模式的配置文件:

   slaveA的my.conf

log-bin= mysql-bin                #所有的数据操作写入二进制日志,便于将sql语句同步到中继日志
replay_log=mysql-replay-bin   #用来存储中继日志
replicat-do-db=user     //该参数会设置将该数据库的变化同步到中继日志中,将该数据库的变化在备库上执行。

   slaveB的my.conf

log-bin= mysql-bin                #所有的数据操作写入二进制日志,便于将sql语句同步到中继日志
replay_log=mysql-replay-bin   #用来存储中继日志
replicat-do-db=department     //该参数会设置将该数据库的变化同步到中继日志中,将该数据库的变化在备库上执行。

   slaveC的my.conf

log-bin= mysql-bin                #所有的数据操作写入二进制日志,便于将sql语句同步到中继日志
replay_log=mysql-replay-bin   #用来存储中继日志
replicat-do-db=message     //该参数会设置将该数据库的变化同步到中继日志中,将该数据库的变化在备库上执行。

  4、其他的配置信息按照主从复制的配置进行设置启动即可。