欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-10-30 21:16:37
pt-table-checksum主从一致性校验工具 1. 功能介绍 检查mysql复制一致性. 2. 用法介绍 pt-table-checksum [OPTION&hel...

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

1. 功能介绍

检查mysql复制一致性.

2. 用法介绍

pt-table-checksum [OPTION…] [DSN]

工作原理: pt-table-checksum在主上执行检查语句在线检查mysql复制的一致性,生成replace语句,然后通过复制传递到从,再通过update更新master_src的值。通过检测从上this_src和master_src的值从而判断复制是否一致。

[DSN] 指向的是主的地址。

  
注意事项:
测试需要一个既能登录主库、也能登录从库,而且能同步数据库的账号。 只能指定一个host,必须为主库的ip. 在检查时会向表加S锁. 运行之前需要从库的同步IO和SQL进程是YES状态 如果在配置主从时, 忽略复制mysql库时, 需要在主上和从上都执行下面的授权语句。 mysql> grant select, process, super, replication slave on *.* to 'checksums'@'x.x.x.x' identified by '123456';
  备注: 使用的时候选择业务地峰的时候运行,因为运行的时候会造成表的部分记录锁定。 使用--max-load来指定最大的负载情况,如果达到那个负载这个暂停运行。如果发现有不一致的数据,可以使用pt-table-sync工具来修复。

  (和1.0版本不同,新版本的pt-table-checksum只需要在master上执行即可)
3. [OPTION..]–选择参数
--nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用

--databases:来指定需要检查的数据库。

--no-check-binlog-format      : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。

--replicate-check-only :只显示不同步的信息。

--replicate=   :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。 

--databases=   :指定需要被检查的数据库,多个则用逗号隔开。

--tables=      :指定需要被检查的表,多个用逗号隔开

--create-replicate-table: 创建表(给用户创建表的权限)

--recursion-method:  主机信息

h=127.0.0.1    :Master的地址

u=root         :用户名

p=123456       :密码

P=3306         :端口

4. 实例:
实例1:
>>> pt-table-checksum --nocheck-replication-filters --databases=activity --replicate=radius.checksums --create-replicate-table --no-check-binlog-format --host=192.168.7.131 --port=3306 -uroot -p123456
            TS ERRORS  DIFFS     ROWS  CHUNKS SKIPPED    TIME TABLE
07-31T14:17:44      0      1        4       1       0   1.131 activity.t
  TS            :完成检查的时间。
  ERRORS        :检查时候发生错误和警告的数量。
  DIFFS         :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。
  ROWS          :表的行数。
  CHUNKS        :被划分到表中的块的数目。
  SKIPPED       :由于错误或警告或过大,则跳过块的数目。
  TIME          :执行的时间。
  TABLE         :被检查的表名。
 mysql > select * from radius.checksums;

            db: activity
           tbl: t
         chunk:1
    chunk_time:0.001246
   chunk_index:NULL
lower_boundary:NULL
upper_boundary:NULL
      this_crc: 706af48f    #slave
      this_cnt:4           #slave
    master_crc: e963a535    #master
    master_cnt:4           #master                 可以发现表t1中从库比主库多0条记录
            ts:2014-04-13 16:05:16