MySQL主从复制常见错误及解决方法(2)

  (2)如果是Could not execute Update_rows,则需要在二进制日志找出出错位置的SQL,再找出该表在主库的对应的数据行,然后直接在从库插入这条数据,开启SQL线程恢复。

  普通主从复制环境

  从库:

  

MySQL主从复制常见错误及解决方法

  主库:

  查看主库在出错的相应位置的执行语句,可通过SQL得出当时update的对应的主键值。

  

MySQL主从复制常见错误及解决方法

  查询item_discovery的对应主键值的数据行。

  从库:

  在items表插入主库查询出来的数据。

  

MySQL主从复制常见错误及解决方法

  基于GTID复制环境

  与普通主从复制环境处理方式相同。

  【ERROR】1062:

  

  普通主从复制环境

  从库:

  

MySQL主从复制常见错误及解决方法

  主库:

  查看主库在出错的相应位置的执行语句,可通过SQL得出当时insert的对应的主键值。

  

MySQL主从复制常见错误及解决方法

  查询trends_uint表对应主键值的数据行。

  

  从库:

  在trends_uint表删除主库查询出来的数据。

  

MySQL主从复制常见错误及解决方法

  基于GTID复制环境

  与普通主从复制环境处理方式相同。

  2.彻底解决方案

  使用pt-table-checksum和pt-table-sync彻底修复数据不一致。

  注意:使用pt工具包首先要安装pt工具包和安装perl模块。

  (1) 从库停止复制

  

MySQL主从复制常见错误及解决方法

  (2) 在主库创建校验信息表

  

MySQL主从复制常见错误及解决方法

  (3) 在主库用pt-table-checksum校验主从数据一致性

  在从库执行以下语句,查看Last_Error,发现数据不一致的表:

  然后返回操作系统执行以下命令:

  

  该命令可以查看该表是否发生数据不一致情况,若有,则使用pt-table-sync修复。

  (4) 在主库用pt-table-sync打印出修复不一致数据的SQL(如果有外键约束,修复数据应先从外键参考的字段所属表开始修复),后将修复语句在从库执行。

  

MySQL主从复制常见错误及解决方法

  四、优化建议

  在复制由于1045、1032、1062的原因中断后,应使用三.1的临时解决方案,恢复复制后再在业务低谷使用pt-check-sum检查数据一致性。

  检查完后可以在从库执行这条语句查看有无数据不一致表:

  

MySQL主从复制常见错误及解决方法

  针对核心表,可以定制自动数据校验脚本,每周进行数据校验,但必须要在业务低谷进行校验哦!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ce2bc9772722e5a52e902a61292f44df.html