Centos 7.4 Mysql 8.0 Switching slave from master-slave to chain replication 备库切换链结构

介绍

当设置了主从复制,服务器B和C从服务器A复制(A是Master服务器,B、C是Slave服务器):服务器A - >(服务器B,服务器C),现在希望使服务器C成为服务器B的从属服务器,则必须在服务器B和服务器C上停止复制。然后执行START SLAVE UNTIL命令将它们带到相同的主日志位置。之后,可以从服务器B获取主日志位置,并在服务器C上执行CHANGE MASTER TO命令。

安装

以下操作都是建立在A、B、C主从复制已经搭建完的基础上进行操作,主从复制搭建可以参考
https://blog.****.net/ciqingloveless/article/details/82866462

1 设置服务器C

关闭C服务器主备

mysql> STOP SLAVE;
mysql> SHOW SLAVE STATUS\G

Centos 7.4 Mysql 8.0 Switching slave from master-slave to chain replication 备库切换链结构

2 设置服务器B

mysql> STOP SLAVE;
mysql> SHOW SLAVE STATUS\G

Centos 7.4 Mysql 8.0 Switching slave from master-slave to chain replication 备库切换链结构

3 设置日志

将服务器B日志位置与服务器C进行比较,找出哪个是与服务器A的最新同步。通常,由于先停止的C服务器,所以一般情况下是B服务器较新。
在本文是B服务器较新

4 设置C服务器同步为止

这里设置的应该是日志较早的服务器,指向日志较新的服务器,我这里一样,所以是C指向B
在C服务器执行

mysql> START SLAVE UNTIL MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=3630;
mysql> SHOW WARNINGS\G
mysql> SHOW SLAVE STATUS\G

Centos 7.4 Mysql 8.0 Switching slave from master-slave to chain replication 备库切换链结构
将C服务器更新为与B服务器相同

5 开启B服务器同步

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G

6 开启C服务器同步

mysql> STOP SLAVE;
mysql> CHANGE MASTER TO MASTER_HOST = '192.168.200.102', MASTER_USER = 'root', MASTER_PASSWORD = 'root', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=2897;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G