主从一致性需通过监控异常信号、区分修复类型、执行修复前检查及分层验证来保障。具体包括识别Seconds_Behind_Master异常等信号,针对主键冲突、表结构不一致等采取对应修复,修复前STOP SLAVE、备份、核对位点,再分元数据、逻辑、时间三层验证。
主从一致性是数据库高可用架构中的核心问题,复制异常若未及时发现和修复,可能导致从库数据滞后、查询结果错误甚至业务故障。关键在于快速定位异常类型、明确修复边界,并避免误操作扩大影响。
不要等到应用报错才去查,日常应监控以下指标:
不同错误需区别对待,不能统一跳过或重放:
NSERT ... ON DUPLICATE KEY UPDATE 逻辑不一致。优先检查是否从库被人为写入;确认后可临时设 SET GLOBAL sql_slave_skip_counter = 1 跳过,但必须记录并同步清理从库脏数据SELECT MASTER_POS_WAIT() 或比对 gtid_executed 确认缺失事务,必要时使用 SET GTID_NEXT + 空事务补位Master_Host 和权限未变更防止“修一个错,出三个坑”:
STOP SLAVE,禁止自动重试掩盖问题mysqldump --single-transaction --master-data=2 对从库做快照备份(尤其在计划跳过或重放前)真正保障业务数据一致,需分层验证:
SELECT COUNT(*)、CHECKSUM TABLE(小表适用)、或 pt-table-checksum(大表推荐)SHOW BINLOG EVENTS IN 'xxx' FROM yyy LIMIT 1 的时间戳,与从库 SELECT @@timestamp 执行时刻交叉比对主从一致性不是配置完就一劳永逸的事,而是一个需要监控、预警、归因、验证的闭环。修复动作本身不难,难的是判断“该不该修”“修到哪一步为止”“修完是否真一致”。保持敬畏,每次操作留痕,比任何自动化脚本都可靠。