首页 > 数据库 > MySQL > 正文

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

2024-07-15 01:59:43
字体:
来源:转载
供稿:网友

利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复。

一、pt-table-checksum检查主从库数据的一致性

pt-table-checksum在MASTER上校验指定库、表,将结果存在一个库表里,复制进程将检验sql传递到slave上再执行一次。通过比较M/S的检验值确定数据是否一致。利用主从复制做检验,不需要在检验期间对主从数据库同时锁表,可以控制校验的数据和速度,不影响到正常服务。

安装:

#依赖包yum  –y  perl-DBI  perl-DBD-MySQL  perl-TermReadKey#percona-toolkit包wget http://www.percona.com/downloads/percona-toolkit/LATEST/percona-toolkit-2.2.4.tar.gztar xzvf percona-toolkit-2.2.4.tar.gz ;  cd percona-toolkit-2.2.4 ;  perl Makefile.pl && make && make install

使用方法:

pt-table-checksum [OPTIONS] [DSN]

pt-table-checksum:在主<M>上通过执行校验的查询对复制的一致性进行检查,对比主从的校验值,从而产生结果。DSN指向的是主的地址,该工具的退出状态不为零,如果发现有任何差别,或者如果出现任何警告或错误,更多信息请见官网。

不指定任何参数,会直接对本地的所有数据库的表进行检查。

pt-table-checksum –S /tmp/mysqld.sock u=root,p=123456

环境:

#主库:mysql> select * from t1;+----+------+| id | name |+----+------+|  1 | aa   ||  2 | bb   ||  3 | cc   ||  4 | dd   ||  5 | ee   |+----+------+5 rows in set (0.00 sec)#从库:mysql> select * from t1;+----+------+| id | name |+----+------+|  1 | aa   ||  2 | bb   ||  3 | cc   ||  4 | dd   |+----+------+4 rows in set (0.00 sec)

注意:

1、  根据测试,需要一个技能登录主库,也能登录从库,而且还能同步数据库的账号;

2、  只能指定一个host,必须为主库的IP;

3、  在检查时会向表加S锁;

4、  运行之前需要从库的同步IO和SQL进程是YES状态。

可以用该语句授权用户,这里为了方便直接用root用户了

GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO ‘checksums’@’x.x.x.x’ IDENTIFIED BY ‘xxxx’;

执行检测(MASTER上):

pt-table-checksum --nocheck-replication-filters --replicate=test.checksum --databases=test h=192.168.68.235,u=root,p=123 --empty-replicate-table --create-replicate-table            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE09-18T12:03:16      0      1        5       1       0   0.018 test.t1

参数说明:

TS            :完成检查的时间。

ERRORS        :检查时候发生错误和警告的数量。

DIFFS         :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表