通过SHOW SLAVE STATUSG命令检查复制状态,重点关注Slave_IO_Running、Slave_sql_Running、Last_Error、Last_IO_Error、Last_SQL_Error和Seconds_Behind_Master字段,根据错误信息如主键冲突采取相应处理措施。

在mysql中查看复制状态错误,主要通过 SHOW SLAVE STATUS 命令来获取从库的复制详情,其中包含是否有错误以及错误的具体信息。
1. 执行命令查看复制状态
登录到MySQL从库后,运行以下命令:
SHOW SLAVE STATUSG
注意:使用 G 而不是分号,可以让输出更清晰,按字段垂直显示。
2. 关键字段检查复制错误
重点关注以下几个字段:
- Slave_IO_Running:应为 Yes,表示IO线程正常拉取主库日志。
- Slave_SQL_Running:应为 Yes,表示SQL线程正常执行中继日志。
- Last_Error:最近一次的错误描述,如果有复制错误,会在这里显示具体原因。
- Last_IO_Error:IO线程发生的错误,比如网络问题、权限不足等。
- Last_SQL_Error:SQL线程执行中继日志时出错,如数据冲突、表不存在等。
- Seconds_Behind_Master:如果为 NULL 或很大数值,可能意味着复制中断或延迟严重。
3. 常见错误及处理思路
例如输出中出现:
Last_SQL_Error: Could not execute Write_rows Event on table test.t1; Duplicate entry ‘1’ for key ‘PRIMARY’, Error_code: 1062
说明在插入数据时发生主键冲突。可考虑:
- 确认主从数据一致性,是否人为修改过从库数据。
- 临时跳过错误(谨慎操作):
 STOP SLAVE;
 SET GLOBAL sql_slave_skip_counter = 1;
 START SLAVE;
- 更安全的方式是重建从库或使用 pt-table-sync 工具修复数据。
4. 使用命令快速判断是否有错误
可以简化查询,只看关键状态:
SHOW SLAVE STATUSG
 查看 Last_Error、Last_IO_Error 和 Last_SQL_Error 是否为空。
基本上就这些。只要定期检查复制状态,及时发现并处理错误,就能保障主从同步稳定运行。


