Admaker服务主从切换问题总结


主从切换问题总结

[机器列表]

tc-dr-amdb-00.tc(旧主库)

tc-dr-amdb-01.tc(新主库)

yf-dba-darwin-admaker00.yf01(yf从库)

db-ku-view11.db01(db线下库)

[问题]

  1. 旧主库和新主库授权信息不一致,导致新主库出现access denied;
  2. 旧主库tc-dr-amdb-00.tc同步新主库tc-dr-amdb-01.tc,出现问题如下问题:
  • 先在旧主库上stop slave && change master,而没有在旧主库change  master之前在yf从库和db线下库上stop slave,此时这两个从库还是同步旧主库,结构变为:
 

但是旧主库上配置了log_slave_updates,结构变为三层结构,此时yf从库和db线下库无法按照新主库记录的同步点同步。

  • 在旧主库上change master发现没有新主库对它没有复制授权(IO线程同步中断,SQL线程同步正常),在临时授权之后,误以为还需要再一次change master(依旧使用第一次change master的同步点),导致Duplicate entry的错误,IO线程同步正常,SQL线程同步中断。
  1. 旧主库出现同步中断,使用STOP SALVE;SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;START SLAVE几次之后,还是无法解决问题,认为当前数据损坏,需要重做数据。在重做数据的时候遇到以下问题:
  • 拷贝db线下库的var目录时候,只停同步而没有停mysql进程,导致在内存或者cache的数据没有刷盘,从而拷贝的var目录数据不正确;
  • 在mv旧主库的var目录后,直接拷贝db线下库的var目录到旧主库的/home/mysql/mysql/目录下,然后将新var下面mysql和relay-log相关文件move,使用旧主库的var目录下mysql代替。

问题在于:没有保留一份scp过来的var,如果无意删除新var的文件的话,则还需要再跨机器拷贝一份数据过来,比较耗时。

[解决方案]

1、  首先确认旧主库和新主库授权一致后,然后再进行主从切换、Handoff操作;

2、  应该先到旧主库、yf从库、db线下库上先stop slave操作,然后再change master或者是先处理yf从库、db线下库的同步最后处理旧主库同步。

对于变成三层结构的问题处理方法如下:

1、将旧主库和新主库之间的同步停止,待旧主库同步更新完毕之后,记录Master_Log_FILE和Exec_Master_Log_Pos;

2、停止yf从库和db线下库和新主库的同步,待同步更新完毕后,使用步骤1记录的同步点重新change master;

3、开启yf从库和db线下库同步,检查状态;

4、开启旧主库和新主库的同步,检查状态。

原文地址:https://www.cnblogs.com/gsblog/p/3098825.html