最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

验证MySQL主从一致性(pt-table-checksum&pt-table-s_MySQL

来源:动视网 责编:小采 时间:2020-11-09 20:01:11
文档

验证MySQL主从一致性(pt-table-checksum&pt-table-s_MySQL

验证MySQL主从一致性(pt-table-checksum&pt-table-s_MySQL:percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性 安装tookkit需要一些依赖包 yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y 实验环境 在Mas
推荐度:
导读验证MySQL主从一致性(pt-table-checksum&pt-table-s_MySQL:percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性 安装tookkit需要一些依赖包 yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y 实验环境 在Mas
 percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性

安装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上。

在Slave从库添加一个数据,模拟主从数据不一致的场景。

insert into test values(5,'e');

在Master主库执行pt-table-checksum命令。

它会使用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语句。然后可以手工确认并执行。

也可以通过这个命令自动执行,不过这样会修改从库的数据,感觉不是太安全。

需要特别注意的是这两个命令执行的过程中,会对表上共享锁,所以生产环境要慎重选择执行时间。

文档

验证MySQL主从一致性(pt-table-checksum&pt-table-s_MySQL

验证MySQL主从一致性(pt-table-checksum&pt-table-s_MySQL:percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性 安装tookkit需要一些依赖包 yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y 实验环境 在Mas
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top