文档章节

pt-table-checksum使用检测主从不一致

Mr_Qi
 Mr_Qi
发布于 2017/11/10 13:31
字数 696
阅读 36
收藏 3

背景

为了项目后期读写分离做准备 必要的数据一致性检测还是有必要的。并且主从出现不一致的情况还是会有

从上篇我们安装了percona-toolkit 

本篇介绍pt-table-checksum的使用

pt-table-checksum 是 Percona-Toolkit 的组件之一,用于检测MySQL主、从库的数据是否一致。其原理是在主库执行基于statement的sql语句来生成主库数据块的checksum,把相同的sql语句传递到从库执行,并在从库上计算相同数据块的checksum,最后,比较主从库上相同数据块的checksum值,由此判断主从数据是否一致。检测过程根据唯一索引将表按row切分为块(chunk),以为单位计算,可以避免锁表。检测时会自动判断复制延迟、 master的负载, 超过阀值后会自动将检测暂停,减小对线上服务的影响。

pt-table-checksum 默认情况下可以应对绝大部分场景,官方说,即使上千个库、上万亿的行,它依然可以很好的工作,这源自于设计很简单,一次检查一个表,不需要太多的内存和多余的操作;必要时,pt-table-checksum 会根据服务器负载动态改变 chunk 大小,减少从库的延迟。

为了减少对数据库的干预,pt-table-checksum还会自动侦测并连接到从库,当然如果失败,可以指定--recursion-method选项来告诉从库在哪里。它的易用性还体现在,复制若有延迟,在从库 checksum 会暂停直到赶上主库的计算时间点(也通过选项--设定一个可容忍的延迟最大值,超过这个值也认为不一致)。

为了保证主数据库服务的安全,该工具实现了许多保护措施:

  1. 自动设置 innodb_lock_wait_timeout 为1s,避免引起

  2. 默认当数据库有25个以上的并发查询时,pt-table-checksum会暂停。可以设置 --max-load 选项来设置这个阀值

  3. 当用 Ctrl+C 停止任务后,工具会正常的完成当前 chunk 检测,下次使用 --resume 选项启动可以恢复继续下一个 chunk
     

 

使用

使用起来绝对不复杂 创建特定权限的用户后将会自动发现从库 统计出来不一样的数据

我们在创建好指定的表之后直接执行如下语句

pt-table-checksum --create-replicate-table --nocheck-replication-filters --databases=f6dms  --ignore-tables-regex=tm_monitor.* h=***,u=***,p=***,P=3306 --no-check-binlog-format

成功找到多条不一致数据

 

同步完成后 各位可以在对应从库执行如下

select * from percona.checksums where master_cnt <> this_cnt OR master_crc <> this_crc OR
ISNULL(master_crc) <> ISNULL(this_crc)

看看我们的slave 满目疮痍……

参考

https://segmentfault.com/a/1190000004309169

© 著作权归作者所有

共有 人打赏支持
Mr_Qi

Mr_Qi

粉丝 281
博文 359
码字总数 369228
作品 0
南京
程序员
私信 提问
mysql主从数据一致性校验及纠错工具

目录 1、概述 2、percona-tooldit工具的安装 3、新建用户 4、pt-table-checksum使用 5、pt-table-sync使用 6、个人总结 1、概述 假如你是一位运维人员,假如你生产环境上部署了mysql系统,再...

蓝狐乐队
2015/10/09
205
0
基于pt-table-checksum和pt-table-sync实现MySQL主从数据一致性校验

在基于MySQL逻辑复制原理的下的主从架构,经常会由于某些缘故产生主从数据不一致,从而导致主从复制进程报错中断。而基于定期去检查从库的show slave statusG的IO线程和SQL线程的状态,只能确...

Jenkin_lin
2018/06/12
0
0
生产环境使用 pt-table-checksum 检查MySQL数据一致性

公司数据中心从托管机房迁移到阿里云,需要对mysql迁移(Replication)后的数据一致性进行校验,但又不能对生产环境使用造成影响,pt-table-checksum 成为了绝佳也是唯一的检查工具。 是 Pe...

seanlook
2018/08/27
0
0
percona-toolkit工具检查mysql复制一致性及修复不一致性

percona-toolkit工具检查MySQL复制一致性及修复 一、pt-table-checksum检查主从库数据的一致性 pt-table-checksum在MASTER上校验指定库、表,将结果存在一个库表里,复制进程将检验sql传递到...

crazy_charles
2016/01/15
0
0
MySQL FAQ系列 pt-table-checksum

背景描述: 因为主从复制导致主从数据不一致的问题,所以使用pt-table-checksum工具来进行主从数据的一致性校验,以下是使用工具时的流程、遇到的问题及解决方法,以期最大限度的模拟线上环境...

insist_way
2018/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

c++ 定义新的异常

#include <iostream> #include <exception> using namespace std; struct MyException : public exception { const char * what () const throw () { return "C++ Exception"; } }; int main......

天王盖地虎626
今天
3
0
PDMan-2.1.1 发布:用心开源,免费的国产数据库建模工具(春节前最后一个版本)

一、软件介绍 PDMan 是一款开源免费的数据库模型建模工具,是PowerDesigner之外另一种更好的选择。支持Windows,Mac,Linux等操作系统,具有上手容易,使用简单的特点。 2018年获得码云GVP (Gi...

O龙猫O
今天
17
0
OSChina 周二乱弹 —— 以后我偷小鱼干养你

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @庞巴哥 :只有这节奏瞬间变得轻松。。。。。。。。。分享Talking Eyes的单曲《In the sun (Extended Version)》: 《In the sun (Extended Ve...

小小编辑
今天
374
7
多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
9
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部