不能盲目执行。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智研社是一个专注于人工智能领域的综合性平台
相关推荐
2601_9679873726 分钟前
python判断变量名不要调用任何函数实现这个DBA有点耶1 小时前
从反向扫描O(n)到正向扫描O(1):降序索引的物理机制与混合排序匹配规则卷无止境1 小时前
SALib敏感性分析的python库学习笔记2501_933923252 小时前
解读Redis:单线程模型duansamve2 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?特立独行的猫A3 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比特立独行的猫A3 小时前
cj-tauri vs Rust/Tauri 同款播放器实测:编译 21 秒 vs 11 分钟,磁盘 12 MB vs 1.2 GBTapdata3 小时前
被忽略的第三类上下文:Agent 进入真实业务后,还缺什么?duansamve3 小时前
详解Flask中Session和Cookie威哥爱编程4 小时前
模拟面试智能体开发实战 04:面试聊到哪算哪?用状态机把整场面试编排起来