MySQL搭建主从后如何校验数据一致性_使用pt-table-sync修复差异

不能盲目执行。pt-table-sync 默认只输出 SQL 不执行,需加 --execute;须确认主库唯一写入,否则修复语句可能错误;建议先用 --dry-run + --print 验证,注意 WHERE 是否基于主键,跨版本同步需显式指定 --charset=utf8mb4。主从数据不一致时,pt-table-sync 能直接修复吗?不能盲目执行。它默认只输出 SQL 语句,不真正执行,除非显式加 --execute。很多运维在没加这个参数的情况下以为"已经修好了",结果查了一圈发现数据还是错的。必须确认主库是唯一写入源,否则从库写入会导致 pt-table-sync 生成错误的反向修复语句建议先用 --dry-run + --print 看它打算怎么修,尤其注意 WHERE 条件是否基于主键(非主键表会退化为全表扫描比对)跨版本同步(如 MySQL 5.7 → 8.0)可能因默认字符集或隐式类型转换导致比对误判,需加 --charset=utf8mb4 显式指定校验阶段为什么 pt-table-checksum 报 Cannot chunk table because of lack of good index这是最常见的卡点:工具需要高效分块遍历表,若表没有单列、非空、有索引的整数型主键或唯一键,就会失败。临时解法是加 --chunk-index 指定一个合适的索引,但该索引必须满足"高选择性+无 NULL"------比如 created_at 时间戳索引通常不行,因为大量重复值长期方案是给大表补一个自增 id 主键,或者把联合唯一键拆成覆盖索引(如 (user_id, order_no) 上建 KEY idx_user_order (user_id, order_no))跳过该表校验不是好主意:--ignore-table 只是掩耳盗铃,后续 pt-table-sync 也不会处理它pt-table-sync 修复后,从库延迟反而飙升了怎么办?因为它默认按主库顺序重放修复 SQL,如果差异集中在热点行(比如用户余额表里某几个 ID),所有 UPDATE 都串行打到同一个分区/页上,锁竞争剧烈。 AI智研社 AI智研社是一个专注于人工智能领域的综合性平台

相关推荐
●VON19 小时前
鸿蒙Flutter实战:分类管理页BottomSheet CRUD
数据库·flutter·华为·harmonyos·鸿蒙
Cosolar19 小时前
Chroma向量库面试学习指南
数据库·人工智能·面试·职场和发展·数据库架构
风吹夏回20 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
小熊Coding20 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
企服AI产品测评局20 小时前
Agent适配信创环境实测:企业级自动化如何实现国产操作系统与数据库全兼容?
运维·数据库·人工智能·ai·chatgpt·自动化
秋920 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本20 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
cfm_291421 小时前
Redis数据安全性解析
数据库·redis·缓存
DIY源码阁21 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse
田里的水稻21 小时前
OE_ubuntu26.04与宿主机之间复制粘贴内容
人工智能·python·机器人