Mysql 一主两从架构转换成级联复制

 

 

 

 因为最近公司服务器要迁移;原来的数据库架构是一主一从的架构(主库A---从库C);增加多一台从库服务器B。

现在要把从库B替换主库A;从库C继续作为B的从库。

一主2从简单说一下步骤;具体步骤省略。

首先搭建好从库B,配置好my.cnf 的server_id

1,先停掉从库C.stop slave

2,记住从库C的同步状态。 show slave status\G    记住Master_Log_File 和Read_Master_Log_Pos 的位置和点。

3,备份从库C,备份完成后导入从库B。

4,主库A授权用户从库B。

5,从库B change master 做主从复制。(用从库C的 位置和点)

 

以上操作完成后,现在的架构是 一主两从的架构;现在要把从库B升级为从库c的主库变为级联架构。

首先从库B要开启二进制日志。并且还要加上参数  log_slave_updates = 1 在授权一个复制用的帐号给从库C。

当从库log_slave_updates参数没有开启时,从库的binlog不会记录来源于主库的操作记录。只有开启log_slave_updates,从库binlog才会记录主库同步的操作日志。

 

  1. 先在从库C上执行STOP SLAVE。show slave status \G查看从库C复制主库A的位置Exec_Master_Log_Pos。
  2.  在从库B上执行show slave status \G;查看从库B上的Exec_Master_Log_Pos是否已经大于从库C上的Exec_Master_Log_Pos,如果大于,则执行stop slave停掉从库B的复制,这时需要记下从库B上的 Relay_Master_Log_File: tex-bin.003882 ,Exec_Master_Log_Pos: 322474479   两个值,在从库B上执行show master status,记下BINLOG文件名字File(B)以及位置Position(B),然后start slave开启复制。
  1. 在从库C上执行start slave until master_log_file='tex-bin.003882',master_log_pos=322474479;   让从库C复制到从库B的位置。  show slave status \G  查看从库C上的Until_Log_Pos与Exec_Master_Log_Pos是否相等,如果相等则stop slave关闭复制。然后把从库C的主库指向从库B,change master to
    master_host='B_ip',
    master_port=3306,
    master_user='rep',
    master_password='xxxx',
    master_log_file=File(B),
    master_log_pos=Position(B),
    master_connect_retry=3;

       

然后start slave开启复制。OK,结束了,就是这样!

 

posted @ 2018-05-18 10:14  会飞的鱼·  阅读(374)  评论(0编辑  收藏  举报