验证MySQL主从一致性(pt-table-checksum&pt-table-sync)
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性安装tookkit需要一些依赖包yum install perl perl-DBI pe
千家信息网最后更新 2025年01月31日验证MySQL主从一致性(pt-table-checksum&pt-table-sync)percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性
安装tookkit需要一些依赖包
在Master上初始化实验数据
在Slave从库添加一个数据,模拟主从数据不一致的场景。
它会使用concat_ws函数将数据合并为一行,然后使用crc32函数生成校验码,最后将其插入percona库的checksums表中。
因为主从环境,这个数据会复制到Slave
也就是说Slave的percona.checksums表,存放的是主库数据的校验码。
所以在Slave对数据执行同样的校验,然后比对checksums表中的数据,就可以验证主从是否一致。
所以执行pt-table-checksum命令的帐号,至少需要有全库的只读权限和percona库的读写权限。
查看主从一致的情况
如果发生不一致,可以使用pt-table-sync命令修复。
需要注意的是这个命令需要在Slave从库执行。
使用print参数,他会在屏幕显示修复的SQL语句。然后可以手工确认并执行。
也可以通过这个命令自动执行,不过这样会修改从库的数据,感觉不是太安全。
需要特别注意的是这两个命令执行的过程中,会对表上共享锁,所以生产环境要慎重选择执行时间。
参考:
http://nettedfish.sinaapp.com/blog/2013/06/04/check-replication-consistency-by-pt-table-checksum/
http://www.cnblogs.com/zhoujinyi/archive/2013/05/09/3067045.html
http://blog.chinaunix.net/uid-16844903-id-3360228.html
安装tookkit需要一些依赖包
- yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y
在Master上初始化实验数据
- create database mvbox;
- use mvbox;
- create table test(id int primary key,name varchar(20));
- insert into test values(1,'a'),(2,'b'),(3,'c'),(4,'d');
在Slave从库添加一个数据,模拟主从数据不一致的场景。
- insert into test values(5,'e');
它会使用concat_ws函数将数据合并为一行,然后使用crc32函数生成校验码,最后将其插入percona库的checksums表中。
因为主从环境,这个数据会复制到Slave
也就是说Slave的percona.checksums表,存放的是主库数据的校验码。
所以在Slave对数据执行同样的校验,然后比对checksums表中的数据,就可以验证主从是否一致。
所以执行pt-table-checksum命令的帐号,至少需要有全库的只读权限和percona库的读写权限。
- create user xx;
- GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO'xx'@'%' IDENTIFIED BY 'xx';
- grant all privileges on percona.* TO'xx'@'%' IDENTIFIED BY 'xx';
查看主从一致的情况
- TS :完成检查的时间。
- ERRORS :检查时候发生错误和警告的数量。
- DIFFS :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。
- ROWS :表的行数。
- CHUNKS :被划分到表中的块的数目。
- SKIPPED :由于错误或警告或过大,则跳过块的数目。
- TIME :执行的时间。
- TABLE :被检查的表名。
- --nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。
- --no-check-binlog-format : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
- --replicate-check-only :只显示不同步的信息。
- --replicate= :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。
- --databases= :指定需要被检查的数据库,多个则用逗号隔开。
- --tables= :指定需要被检查的表,多个用逗号隔开
- h=127.0.0.1 :Master的地址
- u=root :用户名
- p=123456:密码
- P=3306 :端口
如果发生不一致,可以使用pt-table-sync命令修复。
需要注意的是这个命令需要在Slave从库执行。
使用print参数,他会在屏幕显示修复的SQL语句。然后可以手工确认并执行。
也可以通过这个命令自动执行,不过这样会修改从库的数据,感觉不是太安全。
需要特别注意的是这两个命令执行的过程中,会对表上共享锁,所以生产环境要慎重选择执行时间。
参考:
http://nettedfish.sinaapp.com/blog/2013/06/04/check-replication-consistency-by-pt-table-checksum/
http://www.cnblogs.com/zhoujinyi/archive/2013/05/09/3067045.html
http://blog.chinaunix.net/uid-16844903-id-3360228.html
数据
检查
一致
主从
命令
环境
信息
数据库
时间
验证
两个
函数
参数
多个
工具
建议
情况
数目
权限
模式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
济南超时空用友软件开发
优秀软件开发 评语
28岁学软件开发好吗
如何下载网站的数据库
山东单招职业学校网络技术排名
支持3080显卡的服务器
商道融绿esg数据库怎么找
渗透培训网络安全
找靠谱的软件开发团队
常熟电子网络技术服务电话
网络安全的调研方法
网页查询数据库数据导出
sql数据库网页显示问号
我们的日常网络安全
wdcp 数据库
德州软件开发价格
为什么服务器打包慢
国土局 网络安全 风险排查
网络安全周公益晚会
义乌软件开发自学步骤
淄博智慧团建软件开发公司
数据库系统的三级模型结构
魔兽服务器127.0.0.1
unix 系统 服务器
新疆网络安全和去极端化
视频监控系统需要架设服务器吗
有效前沿 建模 数据库
用友网络技术怎么样
linux 自带服务器
mysql更改数据库隔离级别