电话
400 9058 355
MySQL数据不一致常见于主从复制等场景,排查需先定位不一致表与记录,再分析原因并修复加固;推荐用pt-table-checksum等工具快速识别,分层验证复制状态与应用逻辑,优先早发现、防复发。
MySQL 数据不一致通常出现在主从复制、分布式写入、应用双写、异常中断或备份恢复等场景中。排查核心思路是:先定位不一致的表和记录,再分析产生原因,最后修复并加固机制。
人工比对效率低且
易漏,推荐用工具辅助检测:
CRC32(CONCAT(...)) 或 MD5(GROUP_CONCAT(... ORDER BY id)),逐块比对。适合字段少、更新不频繁的配置类表。主从不一致最常见,需分层验证:
SHOW SLAVE STATUS\G 查看 Seconds_Behind_Master、SQL_Thread_State、Retrieved_Gtid_Set 与 Executed_Gtid_Set 是否匹配。Slave_SQL_Running_State 显示 "Has read all relay log" 但数据仍不一致,可能曾执行过 SET GLOBAL sql_slave_skip_counter=1 或 gtid_next 跳过事务,需翻查历史操作日志。NOW()、UUID()、CONNECTION_ID()),会导致主从执行结果不同;混合写入(部分直连主、部分直连从)也会绕过复制链路。这类问题不会触发复制报错,但数据语义已偏离预期:
general_log 抽样分析实际 SQL 执行顺序来佐证。LOAD DATA INFILE 或 INSERT ... SELECT 批量导入时禁用了外键/唯一索引检查(SET FOREIGN_KEY_CHECKS=0),导致脏数据入库。发现不一致后,优先保证服务可用,再择机修复:
pt-table-sync 自动修复(慎用于生产,务必先在测试环境验证,且确保主从角色明确、无双向写入)。REPLACE INTO 或 INSERT ... ON DUPLICATE KEY UPDATE。sql_log_bin 仅限必要维护操作、关键表增加逻辑删除标记而非物理删除、所有写操作走统一 DAO 层并记录变更日志。不复杂但容易忽略。重点不在“怎么修”,而在“怎么早发现、不复发”。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...