首页 技术 正文
技术 2022年11月21日
0 收藏 824 点赞 4,934 浏览 3277 个字

MySQL主从数据一致性检验

检查主从数据一致性,我们使用pt-table-checksum ,pt-table-checksum是percona-tools一个工具,用来校验主从库数据是不是一致。

作为一个MySQL DBA 这个包里percona-tools的工具,建议大家都学习一下。

一、安装percona-tools工具

# wget https://www.percona.com/downloads/percona-toolkit/3.0.6/binary/redhat/7/x86_64/percona-toolkit-3.0.6-1.el7.x86_64.rpm
# yum localinstall percona-toolkit-3.0.6-1.el7.x86_64.rpm

二、pt-table-checksum使用说明

1.参数介绍

--replicate=db1.checksum: 表示把结果存放到db1.checksum表中,默认是在percona.checksum表中。

--recursion-method="processlist": 表示以什么方式发现从库。我们这里使用 processlist方式。这种方式要求主库和从库端口必须相同。如果不相同,只能使用DSN方式。

--databases=dbname :表示校验指定库,不验证其他库。如果是所有库,可以不加这个参数就可以。如果要验证多个库,可以用逗号分隔,例如–databases=db1,db2,db3

--tables=tbname: 表示检验指定的表。

--nocheck-binlog-format :不让命令检测binlog 格式,使用这个命令的时候,使用的账号和密码 也必须可以从主库登录从库才可以。否则就报无法连接从库的错误。Cannot connect to P=3306,h=dev-hd-node3,p=…,u=root

--replicate-check-only :表示只显示不一致的信息。一致信息就不显示了。只要有显示表示出现了不一致。

2.输出内容介绍

TS:完成检查的时间。

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

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

ROWS:被检查表的行数

CHUNKS:被划分到表中的块的数目。

SKIPPED:由于错误或警告或过大,则跳过块的数目。

TIME:执行的时间。

TABLE:被检查的表名。

3.检测指定库

# pt-table-checksum --nocheck-binlog-format --replicate=db1.checksum -h localhost -P3306 -u root -p unixfbi --databases=db1 --recursion-method="processlist"
Checking if all tables can be checksummed ...
Starting checksum ...
Cannot connect to P=3306,h=dev-hd-node3,p=...,u=root
Diffs cannot be detected because no slaves were found. Please read the --recursion-method documentation for information.
TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
01-26T16:08:00 0 0 44 1 0 0.005 db1.tb1
01-26T16:08:00 0 0 13 1 0 0.004 db1.tb2

4.忽略某些库的检测

使用 --ignore-databases参数,例如忽略mysql库的检测。

# pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --ignore-databases=mysql --recursion-method="processlist"
Checking if all tables can be checksummed ...
Starting checksum ...
TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
01-26T16:26:16 0 1 30 1 0 0.013 db1.checksum
01-26T16:26:16 0 0 44 1 0 0.013 db1.tb1
01-26T16:26:16 0 0 13 1 0 0.012 db1.tb2
01-26T16:26:16 0 0 1 1 0 0.012 db2.tb3
01-26T16:26:16 0 0 1 1 0 0.012 db2.tb4
01-26T16:26:16 0 0 6 1 0 0.013 sys.sys_config
01-26T16:26:16 0 0 2 1 0 0.013 wbx3306.t1
01-26T16:26:16 0 0 0 1 0 0.013 wbx3306.tp_1

5.只显示不一致内容

# pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --ignore-databases=mysql --recursion-method="processlist" --replicate-check-only
Checking if all tables can be checksummed ...
Starting checksum ...
Differences on dev-hd-node3
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.checksum 1 0 1

6.检测指定表

--databases=dbname --tables=tbname 需要用到这两个参数

# pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --databases=db1 --tables=checksum --recursion-method="processlist" --replicate-check-only
Checking if all tables can be checksummed ...
Starting checksum ...
Differences on dev-hd-node3
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.checksum 1 0 1

7.分段检测

工作中一个表里可能有几百万甚至几千万条数据,如果对这样的表进行一致性检测的话,花费的时间会很长。所以我们可以对表进行分段检测,例如检测前1000行数据,或者5000行到10000行之间的数据。

其实我们这里是使用的 --where参数;

# pt-table-checksum --nocheck-binlog-format  -h localhost -P3306 -u root -p unixfbi --databases=db1 --tables=checksum --recursion-method="processlist" --replicate-check-only --where="id < 20"

参考文档

https://www.percona.com/software/database-tools/percona-toolkit

https://www.percona.com/doc/percona-toolkit/LATEST/index.html

http://blog.itpub.net/12679300/viewspace-1454837/

本文出自 “运维特工” 博客,转载请务必保留原文链接 和 http://www.unixfbi.com

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,904
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,430
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727