阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL主从一致性校验工具pt-table-checksum

168次阅读
没有评论

共计 2827 个字符,预计需要花费 8 分钟才能阅读完成。

pt-table-checksum 是查看主从一致性的工具,网上很多人说 pt-table-checksum 要在主库上执行,其实不是的,我的 MySQL 实例比较多,只需在某一台服务器上安装 percona-toolkit,这台服务能够同时访问主库和从库就行了。
工具安装:
1. 软件下载:
 
# wget https://www.percona.com/downloads/percona-toolkit/3.0.3/binary/RedHat/6/x86_64/percona-toolkit-3.0.3-1.el6.x86_64.rpm
 
2. 安装该工具依赖的软件包:
# yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes -y
3、软件安装
# rpm -ivh percona-toolkit-3.0.3-1.el6.x86_64.rpm 
如果提示需要依赖,那么使用下列方式安装
# yum localinstall percona-toolkit-3.0.3-1.el6.x86_64.rpm
4、查看是否安装成功
# rpm -qa | grep percona-toolkit
 
在 master 和 slave 创建账号:
mysql>GRANT SELECT,PROCESS,SUPER,REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO ‘USER’@’HOST’ identified by ‘PASSWORD’;
mysql>flush privileges;
说明:HOST 指安装 percona-toolkit 的服务器 IP。
 
在安装了 percona-toolkit 的服务器上执行:
#pt-table-checksum –nocheck-replication-filters –no-check-binlog-format –replicate=cnt.checksums –databases=cnt –tables=ldb_alipay_order h=Master_HOST,u=root,p=123456,P=3306
--no-check-replication-filters 表示不需要检查 Master 配置里是否指定了 Filter。默认会检查,如果配置了 Filter,如 replicate_do_db,replicate-wild-ignore-table,binlog_ignore_db 等,在从库 checksum 就与遇到表不存在而报错退出,所以官方默认是 yes(--check-replication-filters)但我们实际在检测中时指定--databases=,所以就不存在这个问题,干脆不检测。
 
–no-check-binlog-format 不对 binlog 的格式进行检查
 
–replicate-check-only  只显示主从不一致部分, 此参数不会生成新的 checksums 数据,只会根据 checksums 表已经有的数据来显示
 
--databases=-d:要检查的数据库,逗号分隔。--databases-regex 正则匹配要检测的数据库,--ignore-databases[-regex]忽略检查的库。Filter 选项。
 
--tables=-t:要检查的表,逗号分隔。如果要检查的表分布在不同的 db 中,可以用 --tables=dbname1.table1,dbnamd2.table2 的形式。
同理有 --tables-regex--ignore-tables--ignore-tables-regex--replicate 指定的 checksum 表始终会被过滤。
 
[root@master ~]# pt-table-checksum –nocheck-replication-filters –no-check-binlog-format –replicate=cnt.checksums –databases=cent h=127.0.0.1,u=user,p=123456,P=3306
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
06-15T10:24:20      0      0      910       1       0   0.267 cent.ldb_alipay_order
06-15T10:24:21      0      0     1557       1       0   0.283 cent.ldb_charge_history
06-15T10:24:21      0      0     2555       1       0   0.262 cent.ldb_charge_history_detail
06-15T10:24:21      0      0     1488       1       0   0.268 cent.ldb_device
06-15T10:24:21      0      0        7       1       0   0.007 cent.ldb_device_charge
06-15T10:24:21      0      0       34       1       0   0.007 cent.ldb_device_failure
06-15T10:24:21      0      0        0       1       0   0.007 cent.ldb_device_pwd
06-15T10:24:21      0      0        4       1       0   0.007 cent.ldb_failure_info
 
TS:完成检查的时间
ERRORS:检查时候发生错误和警告的数量
DIFFS:0 表示一致,1 表示不一致。当指定–no-replicate-check 时,会一直为 0,当指定–replicate-check-only 会显示不同的信息
ROWS:表的行数
CHUNKS:被划分到表中的块的数目
SKIPPED:由于错误或警告或过大,则跳过块的数目
TIME:执行的时间
TABLE:被检查的表名
 
提示错误:
问题一:
Waiting for the –replicate table to replicate to localhost.localdomain…
 
问题出在 percona.checksums 表在从库不存在,根本原因是没有从主库同步过来,所以看一下从库是否延迟严重。
 
问题二:
Diffs cannot be detected because no slaves were found.  Please read the –recursion-method documentation for information.
 
上面的提示信息很清楚,因为找不到从,所以执行失败。用参数 –recursion-method 可以指定模式解决.

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148263.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2827字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中