首页 > 代码库 > mysql主从同步验证工具

mysql主从同步验证工具

(1)、pt-table-checksum 工具名称

(2)、安装pt-table-checksum
#:wget www.percona.com/downloads/percona-toolkit/2.2.2/percona-toolkit-2.2.2.tar.gz
#:tar -xvf percona-toolkit-2.2.2.tar.gz
#:perl Makefile.PL 
# make && make install

(3)、授权
GRANT update,insert,delete,SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* to ‘tugeadmin‘@‘192.168.100.206‘ identified by ‘peshome0716‘;
创建一个表
CREATE TABLE checksums (
   db             char(64)     NOT NULL,
   tbl            char(64)     NOT NULL,
   chunk          int          NOT NULL,
   chunk_time     float            NULL,
   chunk_index    varchar(200)     NULL,
   lower_boundary text             NULL,
   upper_boundary text             NULL,
   this_crc       char(40)     NOT NULL,
   this_cnt       int          NOT NULL,
   master_crc     char(40)         NULL,
   master_cnt     int              NULL,
   ts             timestamp    NOT NULL,
   PRIMARY KEY (db, tbl, chunk),
   INDEX ts_db_tbl (ts, db, tbl)
) ENGINE=InnoDB;

(4)、开始验证
pt-table-checksum  --nocheck-replication-filters --databases=tuge --replicate=tuge.checksums --create-replicate-table -h192.168.100.206  --port 3306  -utugeadmin -ppeshome0716 --set-vars innodb_lock_wait_timeout=120 --no-check-binlog-format

(5)、验证说明
--nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。
--no-check-binlog-format      : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
--replicate-check-only :只显示不同步的信息。
--replicate=   :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中,(这里写入了tuge库的checksums) 如果没有checksums库.需要手工创建一个.每次监测完成之后干掉它.
这个库表可以随意指定.个人建议把它,放到test 里面去.在test里面建立一个checksums表.  --replicate=test.checksums 
--databases=   :指定需要被检查的数据库,多个则用逗号隔开。
--tables=      :指定需要被检查的表,多个用逗号隔开
h=127.0.0.1    :Master的地址
u=root         :用户名
p=123456       :密码
P=3306         :端口

(6)、常见出错误
常见错误:
--set-vars innodb_lock_wait_timeout=120
使用timeout跳过这个错误提示.