pt-table-checksum数据一致性使用参考(代码片段)

author author     2023-02-12     185

关键词:

pt-table-checksum是检查MySQL数据一致性的神器,配合pt-table-sync工具,简直是堪称完美,网上有很多关于这方面的文章,故这里不做过多的介绍,
只列出具体操作步骤,以备使用时参考:

1.创建用于pt-table-checksum的用户:
grant select,super,process,reload,show databases,replication client,replication slave on . to ‘ptchecksum‘@‘%‘ identified by ‘passtchecksum‘;
GRANT all on percona.* to ‘ptchecksum‘@‘%‘ identified by ‘passtchecksum‘;

2.创建pt-table-checksum使用的一些表信息:
CREATE DATABASE IF NOT EXISTS percona;
CREATE TABLE IF NOT EXISTS percona.checksums (
db CHAR(64) NOT NULL,
tbl CHAR(64) NOT NULL,
chunk INT NOT NULL,
chunk_time FLOAT NULL,
chunk_index VARCHAR(200) NULL,
lower_boundary TEXT NULL,
upper_boundary TEXT NULL,
this_crc CHAR(40) NOT NULL,
this_cnt INT NOT NULL,
master_crc CHAR(40) NULL,
master_cnt INT NULL,
ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (db,tbl,chunk),
INDEX ts_db_tbl(ts,db,tbl)
) ENGINE=InnoDB;

CREATE DATABASE IF NOT EXISTS percona;
CREATE TABLE percona.dsns (
id int(11) NOT NULL AUTO_INCREMENT,
parent_id int(11) DEFAULT NULL,
dsn varchar(255) NOT NULL,
PRIMARY KEY (id)
);

3.如果环境为一主多从并且多个从库时只想验证指定从库的一致时、主库不能自动发现从库、主从检测连接用户信息不一样,都可以使用dsns指定备库:
配置从库的dsn信息:
insert into percona.dsns(dsn) values(‘h=192.168.56.102,P=3306,u=ptchecksum,p=passtchecksum‘);

其中第一个主机h=192.168.56.101为主库的数据库信息,第二个主机dsn=h=192.168.56.102为备库的数据库信息,多个数据库使用逗号分开:
pt-table-checksum --replicate=percona.checksums --nocheck-replication-filters --no-check-binlog-format h=192.168.56.101,u=ptchecksum,p=‘passtchecksum‘,P=3306 --databases=app,app1 --recursion-method dsn=h=192.168.56.102,u=ptchecksum,p=‘passtchecksum‘,P=3306,D=percona,t=dsns

不指定dsn,默认检查所有能发现的slave备库:
pt-table-checksum --replicate=percona.checksums --nocheck-replication-filters --no-check-binlog-format h=192.168.56.101,u=ptchecksum,p=‘passtchecksum‘,P=3306 --databases=app,app1

输出信息:
Checking if all tables can be checksummed ...
Starting checksum ...
TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
12-24T10:15:30 0 1 3 1 0 0.033 app.name
12-24T10:15:30 0 1 1 1 0 0.044 app.t_name
12-24T10:15:33 0 0 426294 7 0 2.628 app1.t
12-24T10:15:34 0 0 199998 1 0 1.311 app1.t_adress
12-24T10:15:34 0 0 2965 1 0 0.364 app1.t_pd_sto_sku

说明:
TS:完成检查的时间戳。
ERRORS:检查时候发生错误和警告的数量。
DIFFS:不一致的chunk数量。当指定 --no-replicate-check 即检查完但不立即输出结果时,会一直为0;当指定 --replicate-check-only 即不检查只从checksums表中计算crc32,且只显示不一致的信息(毕竟输出的大部分应该是一致的,容易造成干扰)。
ROWS:比对的表行数;
CHUNKS:被划分到表中的块的数目,详细的CHUNKS信息可以用表percona.checksums中查询到;
SKIPPED:由于错误或警告或过大,则跳过块的数目;
TIME:执行的时间;
TABLE:被检查的表名;

如果不指定dsn时,默认会根据主库的processlist中找到从库复制进程,从而识别出有哪些从库,然后进行pt-table-checksum,但是如果是多个slave库是,其中一个slave数据不一致,
检查不会给出具体的slave信息,因此此时可以使用dsn方式进行指定具体的slave库进行检查。另外如果数据库使用的是非标准3306端口,会导致找不到从库信息,
此时也建议使用dsn,dsn指定的是某个表,本例中使用percona.dsns,表行记录是主库的多个从库的连接信息。

pt-table-checksum

使用方法:pt-table-checksum[OPTIONS][DSN]pt-table-checksum:在主<M>上通过执行校验的查询对复制的一致性进行检查,对比主从的校验值,从而产生结果。DSN指向的是主的地址,该工具的退出状态不为零,如果发现有任何差别,或者如... 查看详情

pt-table-checksum校验主从库数据库数据(代码片段)

pt-table-checksum校验与pt-table-sync,前者主要用于数据的校验,验证主从是否一致,后者主要用来修复数据,两者一般情况结合起来用可以修复数据不一致的问题。一、pt-table-checksum安装下载工具包的最新地址如下:https://www.percona.co... 查看详情

pt-table-checksum

pt-table-checksum是percona公司提供的一个用于在线比对主从数据一致性的工具。 实现原理将一张大表分成多个chunk,每次针对一个chunk进行校验,同时将校验的结果通过REPLACEINTO语句写入到percona.checksums表中,然后该语句通过主从... 查看详情

主从校验工具pt-table-checksum和pt-table-sync工作原理

  pt-table-checksum和pt-table-sync是常用来做MySQL主从数据一致性校验的工具,pt-table-checksum只校验数据,不能对数据进行同步;pt-table-sync不仅可以检验数据,还可以将不一致的数据同步。工作原理  两个工具的工作原理基本差不... 查看详情

利用pt-table-checksum校验数据一致性(代码片段)

...能就跟主库不一致了。下面和大家学习一个很不错的工具pt-table-checksumpt-table-checksum:MySQL复制完整性校验(这个工具的重点是找到有效数据的差异。如果任何数据是不同的,你可以用pt-table-sync解决问题。)软件包下载地址:http://ww... 查看详情

percona-toolkit之pt-table-checksum(代码片段)

第一部分-简介pt-table-checksum通过SQL在主库执行数据块的校验,再将相同的语句传送到从库,并在从库上计算数据块的校验,最后将主从库相同块的校验值进行对比,辨别主从数据是否不一致。pt-table-sync用来修复主从复制数据的... 查看详情

如何验证主从数据库数据内容一致

用pt-table-checksum时,会不会影响业务性能?实验实验开始前,给大家分享一个小经验:任何性能评估,不要相信别人的评测结果,要在自己的环境上测试,并(大概)知晓原理。我们先建一对主从:然后用mysqlslap跑一个持续的压... 查看详情

如何利用percona-toolkit工具检查mysql数据库主从一致性以及修复

用pt-table-checksum时,会不会影响业务性能?实验实验开始前,给大家分享一个小经验:任何性能评估,不要相信别人的评测结果,要在自己的环境上测试,并(大概)知晓原理。我们先建一对主从:然后用mysqlslap跑一个持续的压... 查看详情

技术分享两个单机mysql该如何校验数据一致性

...一致。当接到这个需求的时候并没当回事,隐约有点印象pt-table-checksum能通过dsn实现MySQL的数据校验,所以当时就应承下来了。不曾想,啪啪打脸,回想起来真是草率了。本文参考的是pt-table-checksum的校验逻辑,基于数据块去遍历... 查看详情

mysql如果出现主从数据不一致情况怎么弄

用pt-table-checksum时,会不会影响业务性能?实验实验开始前,给大家分享一个小经验:任何性能评估,不要相信别人的评测结果,要在自己的环境上测试,并(大概)知晓原理。我们先建一对主从:然后用mysqlslap跑一个持续的压... 查看详情

pt-table-checksum和pt-heartbeat的使用

一.pt-table-checksum1.主从上均新建账户GRANTSELECT,PROCESS,SUPER,REPLICATIONSLAVEON*.*TO‘checksum‘@‘192.168.1.%‘IDENTIFIEDBY‘xxx‘;2.主上新建percona数据库3.对percona数据库赋予checksum账户的所有权限(该项其实不需要,已经是super权限了)GRANTALLPRIVI 查看详情

mysql主从同步校验与重新同步(代码片段)

...致性一般有多种工具,诸如MySQL自带的checksum、mysqldiff、pt-table-checksum等,每种工具各有优缺,本文就pt-table-checksum工具进行介绍和记录实验环节。?下载二进制版本的percona-toolkit工具箱https://www 查看详情

pt-table-checksum检测不出主从差异处理(代码片段)

几个月前写过pt-table-checksum3.0.4检测不出主从差异数据,当时的解决方案是使用旧版本,另一个挫方法是自行设置binlog_format=‘STATEMENT‘。现在已经发布到3.0.9版本,原以为官方修复那个问题,结果还是一样的坑~最近几版pt-table-che... 查看详情

pt-table-checksum(代码片段)

pt-table-checksum安装下载安装包rpm安装数据校验初试dsn解释pt-table-checksum是社区开源产品。但是它不是MySQL自带的工具,需要我们自己进行安装。下面就说下安装过程安装版本信息:xtrabackupversion8.0.26-18basedonMySQLserver8.0.26Linux(... 查看详情

pt-检查数据一致性(代码片段)

...@‘10.11.%.%‘identifiedby‘checksumpasswd‘;flushprivileges;3、检查pt-table-checksum--nocheck-replication-filt 查看详情

native方法改变入参导致blob数据存储不一致问题复盘(代码片段)

...这个bug,差点都让我怀疑MyBatis框架处理二进制类型的数据是不是有漏洞?事实证明,人家框架是健壮、好用的,是我犯了一个低级错误啊。问题描述:某个应用系统的证书文件以BLOB类型存储到数据库中,... 查看详情

pt-table-checksum(代码片段)

xtrabackup安装下载安装包rpm安装数据校验初试dsn解释pt-table-checksum是社区开源产品。但是它不是MySQL自带的工具,需要我们自己进行安装。下面就说下安装过程安装版本信息:xtrabackupversion8.0.26-18basedonMySQLserver8.0.26Linux(x86_64)... 查看详情

pt-table-checksum校验与pt-table-sync修复数据

1:下载工具包登录网站下载相应的工具包https://www.percona.com/downloads/percona-toolkit/LATEST/2:安装(1)yum安装:sudoyuminstallhttp://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpmyum 查看详情