MySQL主从复制断开如何修复

  介绍

本篇文章为大家展示了MySQL主从复制断开如何修复,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。


常见的解决主从复制断裂的方法有以下几种:

1,找到其他从库,快速替换

,,这种方法,需要你的应用具有至少一主两从的架构,其中一个从库发生问题,可以将另外一个从库快速上的线,从而恢复应用访问,后续再来排查出现故障的从库的具体问题原因。

2,跳过复制失败的错误

,,有些情况下,我们可以判断主从复制断裂的原因,例如主库上比从库上多一个数据库db_1,那么当我们在主库上执行删除数据库db_1的时候,从库的复制一定会断开。这种情况下,我们可以通过跳过一个事务来解决。

方法一:(直接跳过当前事务)

,,,在GTID模式下,可以通过下面的命令来解决:

mysql>, STOP 奴隶;   mysql>, SET  GTID_NEXT=& # 39; xxxxxx:多# 39;;,——安康;设置需要跳过的gtid 事件   mysql>,开始,提交;   mysql>, SET  GTID_NEXT=& # 39;自动# 39;;   mysql>, START 奴隶;

,,在非GTID模式下,可以通过下面的命令来解决:

stop 奴隶;   set  sql_slave_skip_counter=1;   start 奴隶;
方法二:(指定新位置)

,,如果我们通过binlog分析,知道了下一个事务的具体点位,也可以指定下一个事务具体位置的方法来解决:

GTID模式下:

mysql>,, STOP 奴隶;   mysql>,, RESET 主;   mysql>,, SET  @@GLOBAL.GTID_PURGED =& # 39; xxxxxxx: yyyyyy& # 39;,, - - - - -安康;表示这些gtid 事件已经执行过了   mysql>,, START 奴隶;

注意,GTID_PURGED必须是全球性的,上面的命令也可以写成集全球GTID_PURGED=& # 39; xxx:多# 39;

非GTID模式下:

stop 奴隶;   change  master 用master_log_file=& # 39; mysql-bin.001360& # 39;, master_log_pos=676383371;   start 奴隶;
方法三:pt-slave-restart工具

,,如果我们跳过一个事务之后,还出现断开的场景(例如我们在从库上删除了100条数据,但是主库要更新这100条数据),可以使用pt-slave-restart这个工具,它可以连续跳过断开的位置。

,,它的使用方法如下:

pt-slave-restart  -h  10. xxx.xxx.xxx  -P  port  -u  user  -P 密码

,,当我们使用并行复制的时候,pt-slave-restart可能会出现报的错,这个时候我们可以通过将并行复制修改为单线程复制,然后再使用pt-slave-restart工具,可以参考这篇文章:

pt-slave-restart工具

方法四:设置参数slave_exec_mode

,,,这个参数可以修改主从复制过程中的从库执行模式,如果是严格严格模式,则所有的复制一旦报错就会停止,如果设置成幂等幂等模式,则特定错误号的错误将会被跳过。命令如下:

set  global  slave_exec_mode =,幂等

3,利用备份重建从库

,,这种方法的使用场景不多,通常情况下,只有从库已经不可用或者无法从主库同步的时候,才会考虑这种方法,例如主库上执行了复位主操作,导致所有的binlog被清理了,这样从库就无法获取读取正确的binlog,复制就会断开,这种情况下,重建从库可能是唯一的办法了。

上述内容就是MySQL主从复制断开如何修复,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

MySQL主从复制断开如何修复