一、不同级别挂载为同一级别
低级从库往上级挂载比较简单,只要上一级停止复制线程,确保没有数据写入,记录此时被挂载的主库位点,按此位点change即可。
如下:把192.168.1.4提升为1级从库,挂载到192.168.1.1下
操作步骤:
步骤 | 主库 | 一级从库 | 二级从库 |
IP | 192.168.1.1 | 192.168.1.3 | 192.168.1.4 |
1 | 停止1级从库的复制线程 stop slave; | ||
2 | 记录此时主库位置 show slave status\G Master_Log_File: 主库binlog Read_Master_Log_Pos: 主库Pos | ||
3 | 确保从库没有延迟 show slave status\G Seconds_Behind_Master: 0 | ||
4 | 如没有延迟执行 change master to master_user='XXX',master_password='XXX',master_host='192.168.1.1',MASTER_LOG_FILE='主库binlog', MASTER_LOG_POS=主库Pos; | ||
5 | start slave; | ||
6 | start slave; | ||
7 | 查看状态 show slave status\G | 查看状态 show slave status\G |
二、同级别挂载为不同级别
将1级从库挂到同级从库下,变成2级从库,此时需要用到start slave until功能,且需注意先停止摘掉的那台从库。
如下:把192.168.1.4挂载到192.168.1.3下,变成2级从库
操作步骤:
步骤 | 主库 | 一级从库 | 二级从库 |
IP | 192.168.1.1 | 192.168.1.3 | 192.168.1.4 |
1 | 先停止需要变成2级从库那台复制线程 stop slave; | ||
2 | 再停止目标1级从库的复制线程 stop slave; | ||
3 | 记录此时执行到的主库位置 show slave status\G Master_Log_File: 主库binlog Read_Master_Log_Pos:主库Pos | ||
4 | 追到上一步主库位置 start slave until MASTER_LOG_FILE='主库binlog', MASTER_LOG_POS=主库Pos; | ||
5 | 记录自身binlog位置 show master status\G File: 1级从库binlog Position: 1级从库Pos | ||
6 | 执行 change master to master_user='XXX',master_password='XXX',master_host='192.168.1.3',MASTER_LOG_FILE='1级从库binlog', MASTER_LOG_POS=1级从库Pos; | ||
7 | start slave; | ||
8 | 查看状态 show slave status\G | ||
9 | start slave; | ||
10 | 查看状态 show slave status\G |
先停止摘掉的那台从库,再停止目标从库复制,是为了确保在一直有写入的情况下,不会造成数据遗漏,保证目标库数据比自身数据要新。都断开复制后,利用start slave until MASTER_LOG_FILE='xxx', MASTER_LOG_POS=xxx;来实现跟目标数据一致,并且此时两边都没有写入,再正常change master即可。