场景:
124为主1:两个slave进程的状态为YES
125为主2:两个slave进程,SQL为NO。
错误方法:
从124备份数据bak.sql,在125进行恢复。这种方法会报主键冲突,如果中途中断或者执行了reset master就会丢数据。
做之前,记得:备份!备份!备份!备份是救命稻草。
正确方法:
1、在124上执行stop slave;reset slave all;
查看file和Position show master status\G;
File: mysql-bin.000005
Position: 297506588
备份数据:
mysqldump -u'用户名' -p'密码' --database 库1 库2 > bak.sql
2、确认125上没有应用连接写数据,在125上stop slave;reset slave all;
source bak.sql
CHANGE MASTER TO MASTER_HOST='xx.xx.xx.124',MASTER_USER='用户',MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=297506588;
start slave;
3、在125上查看file和Position
File: mysql-bin.000001
Position: 154
4、在124上执行
CHANGE MASTER TO MASTER_HOST='xx.xx.xx.125',MASTER_USER='用户',MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
start slave;
建议:
使用xtrabackup或者mysqlbackup物理备份恢复的方式恢复主从,这样不容易出错。