Mysql从库主键卡住_从库宕机引发的主键冲突

当遇到从库宕机后,发现MySQL主从同步出现问题,报主键冲突。检查my.cnf配置文件发现缺少innodb_overwrite_relay_log_info参数。该参数能防止同步失败,但在恢复过程中可能会导致relay.info文件被重写。解决方法是在从库上添加relay_log_recovery=1参数,确保主从同步的正确性。通过设置这个参数,系统将从已执行的事务位置开始同步,避免不一致。
摘要由CSDN通过智能技术生成

刚刚接到报警短信,从库宕机,马上通知机房重启,在检查MySQL时,发现同步挂了,报主键冲突,询问开发是不是有往里面写数据,回答没有。这就奇怪了,怎么会无缘

刚刚接到报警短信,从库宕机,马上通知机房重启,在检查MySQL时,发现同步挂了,报主键冲突,询问开发是不是有往里面写数据,回答没有。

这就奇怪了,怎么会无缘无故报错呢?在检查了my.cnf配置文件,发现有个参数没有配置:innodb_overwrite_relay_log_info = 1

当从库宕机后,重新开启主从复制同步,它可以重新执行已提交事务,这样就会造成同步失败,而这个参数就会避免这个问题的出现。

当开启了这个参数后....

+ InnoDB: Warning: innodb_overwrite_relay_log_info is enabled. Updates of other storage engines may have problem of consistency.

+ InnoDB: relay-log.info is detected.

+ InnoDB: relay log: position 429, file name ./gauntlet3-relay-bin.000111

+ InnoDB: master log: position 280, file name gauntlet3-bin.000015

....

InnoDB: Starting crash recovery.

....

InnoDB: Apply batch completed

+ InnoDB: In a MySQL replication slave the last master binlog file

+ InnoDB: position 0 468, file name gauntlet3-bin.000015

+ InnoDB: and relay log file

+ InnoDB: position 0 617, file name ./gauntlet3-relay-bin.000111

090205 17:41:31 InnoDB Plugin 1.0.2-3 started; log sequence number 57933

+ InnoDB: relay-log.info have been overwritten.

....

090205 17:41:31 [Note] Slave SQL thread initialized, starting replication in log ``gauntlet3-bin.000015`` at position 468, relay log ``./gauntlet3-relay-bin.000111`` position: 617

已经执行完的Position点:master log: position 280, file name gauntlet3-bin.000015

在恢复时它内部会检测到280这个点已经执行完毕,从下一个点468开始同步,并且重写relay.info文件,,确保了主从同步正确。

建议在从库上添加,如果是官方MySQL,参数是relay_log_recovery=1

具体请参考:

本文出自 “贺春旸的技术专栏” 博客,请务必保留此出处

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值