mysql 案例 ~ pt修复工具的使用

简介:今天咱们来聊聊PT修复工具pt-table-sync

注意事项:
   1 表要有主键或者唯一键
   2 针对每一个chunk加的是for update锁
   3 修复过程中不能容忍从库延迟 如果从库延迟太多,pt-table-sync会长期持有对chunk的for update锁,然后等待从库的master_pos_wait执行完毕或超时。从库延迟越大,等待过程就越长,主库加锁的时间就越长,对线上影响就越大
   4 有触发器和主外键约束的情况下要慎用
   5 主从数据不一致需要通过replace into来修复,在主库应用生成binlog,并会应用到所有从库
   6 根据pt-table-checksum的表信息修复的,所以要先校验后修复
   7 pt-table-sync不会同步表结构、索引等,只同步不一致的数据
用户权限
   GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,SUPER ON db.* TO 'god'@'%' IDENTIFIED BY 'god'//修复的库
相关参数
   –sync-to-master 指定一个DSN,即从的IP,他会通过show processlist或show slave status 去自动的找主。
   --unique-checks 唯一键检测
   --print 进行打印语句
   --execute 真正执行
常用命令范式
   pt-table-sync --replicate test.checksums --sync-to-master --unique-checks h=从IP,P=3306,u=god,p=god --print 打印
   pt-table-sync --replicate test.checksums --sync-to-master --unique-checks h=从IP,P=3306,u=god,p=god --execute 执行
解决思路
  1 先用pt-table-checksum校验一遍,确定不一致的程度:如果不同步的很少,用pt-table-sync直接修复;否则,用备份先替换它,然后用pt-table-sync修复
  2 在用rsync工具修复的时候最好先print再execute或者手工对从库执行sql即可
补充
  针对主从同步发生一些错误的场景
  1 pt-table-checksum 针对发生的表进行校验,最好采用DSNS
  2 pt-table-sync 根据第一步的信息进行修改,然后执行sql

原文地址:https://www.cnblogs.com/danhuangpai/p/9178517.html