MySQL主从复制断开的常⽤修复⽅法
⽬录
01 问题描述
02 解决问题的⽅法
1、到其他从库,快速替换
2、跳过复制失败的错误
⽅法⼀:(直接跳过当前事务)
mysql数据库损坏修复⽅法⼆:(指定新位置)
⽅法三:pt-slave-restart⼯具
⽅法四:设置参数slave_exec_mode
3、利⽤备份重建从库
01 问题描述
在⽣产环境中,我们经常会遇见MySQL主从复制断开的情况,在遇到主从复制断开是,通常情况,解决问题的步骤如下:
1、从库上show slave status查看复制断开的直观原因,并记录当前的复制位点
2、查看error log,分析更详细的复制断开原因
3、修复主从复制关系
4、如果复制关系⽆法修复,则需要重新搭建从库
02 解决问题的⽅法
主从复制关系断裂,有各种各样的原因。有些时候,我们没有时间去客观分析原因,因为应⽤程序处于⽆法使⽤状态,需要⽴即恢复,这种情况下,我们对复制断裂问题和服务可⽤性之间必须做⼀个权衡,然后再进⾏相应的处理。
常见的解决主从复制断裂的⽅法有以下⼏种:
1、到其他从库,快速替换
这种⽅法,需要你的应⽤具有⾄少⼀主两从的架构,其中⼀个从库发⽣问题,可以将另外⼀个从库快速上线,从⽽恢复应⽤访问,后续再来排查出现故障的从库的具体问题原因。
2、跳过复制失败的错误
有些情况下,我们可以判断主从复制断裂的原因,例如主库上⽐从库上多⼀个数据库db_1,那么当我们在主库上执⾏drop database db_1的时候,从库的复制⼀定会断开。这种情况下,我们可以通过跳过⼀个事务来解决。
⽅法⼀:(直接跳过当前事务)
在GTID模式下,可以通过下⾯的命令来解决:
mysql> STOP SLAVE;
mysql> SET GTID_NEXT='xxxxxx:yyy'; ----- 设置需要跳过的gtid event
mysql> BEGIN;COMMIT;
mysql> SET GTID_NEXT='AUTOMATIC';
mysql> START SLAVE;
在⾮GTID模式下,可以通过下⾯的命令来解决:
stop slave;
set sql_slave_skip_counter=1;
start slave;
⽅法⼆:(指定新位置)
如果我们通过binlog分析,知道了下⼀个事务的具体点位,也可以指定下⼀个事务具体位置的⽅法来解决:
GTID模式下:
mysql>  STOP SLAVE;
mysql>  RESET MASTER;
mysql>  SET @@GLOBAL.GTID_PURGED ='xxxxxxx:yyyyyy'  ----- 表⽰这些gtid event已经执⾏过了
mysql>  START SLAVE;
注意,GTID_PURGED 必须是 GLOBAL,上⾯的命令也可以写成set global gtid_purged='xxx:yyy'
⾮GTID模式下:
stop slave;
change master to master_log_file='mysql-bin.001360',master_log_pos=676383371;
start slave;
⽅法三:pt-slave-restart⼯具
如果我们跳过⼀个事务之后,还出现断开的场景(例如我们在从库上删除了100条数据,但是主库要更新这100条数据),可以使⽤pt-slave-restart这个⼯具,它可以连续跳过断开的位置。
它的使⽤⽅法如下:
pt-slave-restart -x.xxx -P port -u user -p password
当我们使⽤并⾏复制的时候,pt-slave-restart可能会出现报错,这个时候我们可以通过将并⾏复制修改为单线程复制,然后再使⽤pt-slave-restart⼯具,可以参考这篇⽂章:
⽅法四:设置参数slave_exec_mode
这个参数可以修改主从复制过程中的从库执⾏模式,如果是strict严格模式,则所有的复制⼀旦报错就会停⽌,如果设置成idempotent幂等模式,则特定错误号的错误将会被跳过。命令如下:
set global slave_exec_mode = idempotent
具体可以参考之前的⽂章:
这篇⽂章中还有其他两种跳过复制错误的参数,分别是slave_skip_errors、sql_slave_skip_counter
3、利⽤备份重建从库
这种⽅法的使⽤场景不多,通常情况下,只有从库已经不可⽤或者⽆法从主库同步的时候,才会考虑这种⽅法,例如主库上执⾏了reset master操作,导致所有的binlog被清理了,这样从库就⽆法获取读取正确的binlog,复制就会断开,这种情况下,重建从库可能是唯⼀的办法了。
以上就是MySQL主从复制断开的常⽤修复⽅法的详细内容,更多关于MySQL主从复制断开修复的资料请关注其它相关⽂章!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。