常见 MySQL 主从复制错误代码及解释

1、Error_code: 1032

  • 含义: Can't find record in 'table_name'

  • 解释: 从库尝试执行一个 DELETE 或 UPDATE 语句,但在对应表中没有找到主键匹配的记录。

  • 原因:

    • 从库的数据和主库的数据不一致,可能是数据被人为更改或丢失。

    • 主库执行删除操作时,该记录存在,但从库之前已经删除。

  • 解决方法:

    • 手动对齐主从数据(例如使用 pt-table-checksum 和 pt-table-sync 工具)。

    • 跳过当前错误事件(不推荐长远使用):

    • STOP SLAVE;
      SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
      START SLAVE;

2、Error_code: 1062

  • 含义: Duplicate entry 'xxx' for key 'PRIMARY'

  • 解释: 从库执行插入(INSERT)语句时出现主键冲突,说明该数据已经存在。

  • 原因:

    • 从库中手动插入了数据,造成主键重复。

    • 主库数据被多次同步。

  • 解决方法:

    • 检查并删除从库中冲突的数据。

    • 避免直接在从库执行写操作。

3、Error_code: 1146

  • 含义: Table 'db_name.table_name' doesn't exist

  • 解释: 从库尝试对某张表操作时,发现该表不存在。

  • 原因:

    • 表尚未复制到从库。

    • 从库的表被误删或复制顺序出错。

  • 解决方法:

    • 确保表结构同步(重新导入表结构)。

    • 检查复制起点和顺序。

4、Error_code: 1213

  • 含义: Deadlock found when trying to get lock; try restarting transaction

  • 解释: 从库在执行复制事件时出现死锁。

  • 原因:

    • 多个线程在从库执行时产生锁冲突。

  • 解决方法:

    • 检查并优化应用事务逻辑。

    • 设置 slave_parallel_workers 为较小的值,避免并发太多。

5、Error_code: 1594

  • 含义: Relay log read failure: Could not parse relay log event entry

  • 解释: 从库的 relay log 被破坏或格式错误。

  • 原因:

    • 复制过程中网络异常导致中间日志损坏。

  • 解决方法:

    • 重新设置从库:

    • RESET SLAVE;
      CHANGE MASTER TO ...;
      START SLAVE;

6、Error_code: 1872

  • 含义: Slave failed to initialize relay log info structure from the repository

  • 解释: 从库无法正确初始化复制状态。

  • 解决方法:

    • 通常需要清空复制状态并重新配置主从关系。

 

posted @ 2025-05-27 16:09  凡人半睁眼  阅读(96)  评论(0)    收藏  举报