日期:2014-05-16  浏览次数:20745 次

MySQL主从严重延迟后迁移Transfer的注意事项

MySQL-Transfer逐渐有一些其他公司的同学在使用,这里会持续更新运维上的注意事项。

??????

背景

?????? 正常情况下,若要从原来的主从切换成Transfer 模式,只需要作如下步骤:

1、slave相同机器上部署一个Transfer,并配置好各种remote_slave参数

2、slavestop slave

3、slave的表结构dumptransfer

4、slave中查看当前执行到master的位置

5、transfer执行change master xxxxx; start slave 即可。

?

状况描述

?????? 线上某个项目主从延迟很多天(>7)。由于主库的binlog只保存一周,导致在要切换到Transfer的时候,从slaveshow slave status得到的master_log_file在主库已经不存在了。

?????? 这样无法通过上述的步骤5来实现切换到原来的位置。

?

有同学要问,这样的情况下,原来的主从怎么保证最终一致性?

实际上从库上是有两个线程协同工作的,io_thread 已经把主库的更新命令都接收并保存在本地的relay-log了。