本文主要是介绍MySQL一主两从转级联复制【实操系列】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一主两从 转 级联复制 示意图如下
M ---> S1\ ====> M ---> S1 ---> S2\ --> S2
如果有开启GTID操作起来方便多,GTID是唯一的,直接操作即可。
如果使用file_name、position可以使用如下办法(现在还没开启gtid真的是无力吐槽)
# 步骤1、
# 现将S2的复制断开
S2: stop slave;
# 步骤2、
S1: stop slave; # S1复制断开 show slave status \G; # 得到当前S1同步到的M的文件和位置,# 注:S1并没有同步到此处,得到位置也是方便使用start slave UNTIL来对齐复制# Master_Log_File: mysql-bin.001773# Read_Master_Log_Pos: 64750877# Slave_IO_Running: Yes# Slave_SQL_Running: Yes# Exec_Master_Log_Pos: 64750877show master status; # 若复制对齐后,则需要找到当前S1的filename、pos+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.001773 | 62794811 | | |+------------------+----------+--------------+------------------+select sleep(1); start slave; select sleep(1);show slave status\G # 检查复制状态
# 步骤3、
# S2开放复制,追赶到S1相同的位置
S2: start slave UNTIL MASTER_LOG_FILE ="mysql-bin.001773", MASTER_LOG_POS=64750877;、show slave status\G # Master_Log_File: mysql-bin.001773# Read_Master_Log_Pos: 78398909# Slave_IO_Running: Yes# Slave_SQL_Running: No 追到既定位置就没用继续使用binlog文件了# Exec_Master_Log_Pos: 64750877 已经追赶到S1的位置了
# 步骤4、
S2: stop slave;change master to master_host='S1',master_log_file='mysql-bin.001773',master_log_pos=62794811; 执行S1的地址和filename、positionstart slave;
此刻,已经完成了转化到级联复制的步骤。有点蛋疼。GTID才是王道。
这篇关于MySQL一主两从转级联复制【实操系列】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!