MySQL复制中断后应先定位原因、检查数据一致性再安全恢复,而非直接重启复制;需通过SHOW SLAVE STATUS分析IO/SQL线程状态、错误码、位点及GTID信息,按主键冲突、表缺失、binlog删除、GTID冲突等类型采取对应修复措施,并用pt-table-checksum校验一致性。
MySQL 复制中断后,关键不是立刻重启复制,而是先确认中断原因、检查数据一致性、再选择安全的恢复方式。盲目执行 START SLAVE 可能导致主从数据错乱或跳过关键事务。
登录从库执行:SHOW SLAVE STATUS\G
重点关注以下字段:
根据错误类型选择处理策略,避免“一刀切”跳过错误:
(SET GLOBAL sql_slave_skip_counter = 1)还是人工修复数据后恢复expire_logs_days 设置是否过小;若缺失日志不可补,需重新搭建从库SELECT * FROM performance_schema.replication_applier_status_by_coordinator; 查当前卡点,必要时用 SET GTID_NEXT='xxx'; BEGIN; COMMIT; 注入空事务跳过不能只看 Seconds_Behind_Master = 0 就认为一致。建议:
pt-table-checksum(Percona Toolkit)校验主从表级数据一致性,尤其对核心业务表SHOW MASTER STATUS 和 SHOW SLAVE STATUS 中的 binlog 位置或 GTID 集合是否完全匹配CRC32(CONCAT(...)))、时间范围数据read_only=ON 已启用),防止二次污染多数中断源于配置疏漏或运维操作不规范:
binlog_format = ROW,避免语句级复制的不确定性read_only = ON + super_read_only = ON(MySQL 5.7+),禁止意外写入relay_log_purge = ON),但避免与 sync_relay_log = 0 同时使用Seconds_Behind_Master、SQL/IO 线程状态、relay log 磁盘空间、复制错误码告警