暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
error1062 1032双主故障的案例
1465
5页
5次
2020-07-06
免费下载
error1062 1032双主故障的案例
简述⼀下复制故障10621032的错误:
$ perror 1062
MySQL error code 1062 (ER_DUP_ENTRY): Duplicate entry '%-.192s' for key %d
主键重复,复制⽆法继续执⾏。
$ perror 1032
MySQL error code 1032 (ER_KEY_NOT_FOUND): Can't find record in '%-.192s'
MySQL中找不到对应的那条数据,找不到数据,主库传来的updatedelete操作都⽆法执
⾏,会造成复制⽆法继续执⾏。
双主结构的MySQL突然报错:
MySQL版本为5.7.24
⼀端的主从复制报错:
1062Duplicate entry ‘411523’ for key ‘PRIMARY’
错误⽇志报错:
这张表存在created_time 字段⽤来记录对数据的修改时间。
故障处理
此时对MM架构两端 对这条主键为‘411523’的数据进⾏查询:
_name 数据不⼀致
这张表存在created_time 字段⽤来记录对数据的修改时间。按照show slave status的输出结
果,我查看了在报错的时间之前,该表存在的数据有15
解决思路
当时考虑到三种⽅案:
⽅案⼀:
使⽤GTID复制的特性跳过1062的这次错误
如果⽅案⼀解决不了,考虑⽅案⼆:
设置sqllogbin=0,在从库删除冲突数据后,开启主从复制
如果依然⽆法解决,只能考虑⽅案三:
重新搭建从库
⽅案⼀:使⽤GTID复制的特性跳过1062的这次错误
操作步骤:
mysql> stop slave;
mysql> set GTID_NEXT=‘XXX:804312’;
mysql> begin;
mysql> commit;
mysql> set GTID_NEXT=‘AUTOMATIC’;
mysql> start slave;
使⽤以上⽅法多次跳过事务,但是仍旧报错在主键’411523’的位置,此时GTID已经是不同的
GTID了。
既然已经跳过了事务,报错还是不变呢?因为复制是以组提交的⽅式进⾏的,虽然GTID是不
同的,但是end_positon是⼀样的。
显然,⽅案⼀,并不适⽤这种情况。
⽅案⼆:设置sql_log_bin=0,在从库删除冲突数据后,开启主从复制
在排查的过程中,已经知道了只有15条数据在报错时间的时间发⽣修改,那么尝试将这些数据
都清除,然后依靠主从复制,将主库的信息传送到从库回放。
操作步骤:
set sql_log_bin=0;
delete from XXXXX where id='XXXX';
在我执⾏完删除15条数据的操作后,开启主从复制,出现新的报错:
ERROR:1032!Could not execute Updaterows event on table XX.XX; Can’t find record in
..’;the events master log mysql-bin.000033, endlog_pos 76641875
根据这⾥给出的内容,进⾏对应主库的binlog解析:
mysqlbinlog --no-defaults --base64-output=decode-rows -vv mysql-bin.000033>33.log
找到对应end_pos的位置:
of 5
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论