验证MySQL主从一致性(pt-table-checksum&pt-table-sync)
发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性安装tookkit需要一些依赖包yum install perl perl-DBI pe
千家信息网最后更新 2024年10月22日验证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安全错误
数据库的锁怎样保障安全
永州软件开发公司哪家靠谱
联友科技软件开发工程师面试
对日软件开发常用单词与句子
门禁日志 网络安全法
上海高科技网络技术产业
江苏服务器机房有哪些云服务器
军事网络安全学习
mfc软件开发是什么意思
kvs切换器网络安全
华为鸿蒙系统软件开发
河南物业收费软件开发
lora网关做服务器
成都律其风软件开发有限公司
网络安全中职比赛
网络安全公司绩效方案设计
安源可信网络安全平台
宁夏数据防泄密软件开发公司
cf挑战强化服务器
数据库优化怎样避免多表查询
福州必胜达软件开发
三星手机代理服务器设置
手机号数据库购买
长春软件开发管理员工资
金蝶sql数据库是什么
数据库表的字段名长度可达
ODBC本地数据库连不上
新时代网络安全工作
高陵区软件开发哪家好
网络安全 信息化 事关
泰坦陨落2无法连接服务器失败