数据库数据一致性检验部署文档

 

1pt-table-checksum 安装:

 

各个版本一览地址:http://www.percona.com/downloads/percona-toolkit/

我们所需软件下载地址:

http://www.percona.com/downloads/percona-toolkit/2.2.2/ percona-toolkit-2.2.2.tar.gz

具体的安装步骤如下:

yum install    perl    mysql    perl-DBD-MySQL    -y(安装percona-toolkit所需要的软件包)

tar -zxvf percona-toolkit-2.2.2.tar.gz 

cd percona-toolkit-2.2.2

perl Makefile.PL 

make && make install

#vim percona-toolkit-2.2.2/README (如果安装中有问题,请查考README

 

2、修改MySQL相关环境变量

 

rm     -rf     /usr/bin/mysql

rm     -rf     /usr/bin/mysqladmin 

rm     -rf     /usr/bin/mysqlaccess

rm     -rf     /usr/bin/mysqlbinlog

rm     -rf     /usr/bin/mysqlcheck

rm     -rf     /usr/bin/mysqldump

ln     -s      /usr/local/mysql5/bin/mysql     /usr/bin/

ln     -s      /usr/local/mysql5/bin/mysqladmin    /usr/bin/ 

ln     -s      /usr/local/mysql5/bin/mysqlaccess    /usr/bin/

ln     -s      /usr/local/mysql5/bin/mysqlbinlog    /usr/bin/

ln     -s      /usr/local/mysql5/bin/mysqlcheck    /usr/bin/

ln     -s      /usr/local/mysql5/bin/mysqldump    /usr/bin/

 

3、在Master库上授权:

 

GRANT update,insert,delete,SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TOchecksum@'Master ip'IDENTIFIED BY '1q2w3e4r' ;

 

4、手动创建数据库pts并创建checksums 表,保存pt-table-checksum 检测数据:

 

CREATE TABLE checksums (

dbchar(64)    NOT NULL,

tblchar(64)    NOT NULL,

chunkint    NOT NULL,

chunk_timefloat    NULL,

chunk_indexvarchar(200)    NULL,

lower_boundary text    NULL,

upper_boundary text    NULL,

this_crcchar(40)    NOT NULL,

this_cntint    NOT NULL,

master_crcchar(40)    NULL,

master_cntint    NULL,

tstimestamp    NOT NULL,

PRIMARY KEY (db, tbl, chunk),

INDEX ts_db_tbl (ts, db, tbl)

) ENGINE=InnoDB;

 

5、执行pt-table-checksum 检查主从数据表:

 

/usr/bin/pt-table-checksumh='Master_IP',u='checksum',p='1q2w3e4r',P=3306--nocheck-replication-filters \

--no-create-replicate-table --replicate=pts.checksums--no-check-binlog-format--set-vars innodb_lock_wait_timeout=50

上面显示的参数说明:

TS:完成检查的时间。

ERRORS:检查时候发生错误和警告的数量。

DIFFS0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。

ROWS:表的行数。

CHUNKS:被划分到表中的块的数目。

SKIPPED:由于错误或警告或过大,则跳过块的数目。

TIME:执行的时间。

TABLE:被检查的表名。

 

6、通过计划任务来定时校验数据一致性

 

#cat /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

0 8 * * * root /data/scripts/Consistency.sh

 

7Consistency.sh脚本内容

#cat /data/scripts/Consistency.sh 

#!/bin/sh

#set -x

DIR=/data/scripts/Consistency/

cd ${DIR}

TIME=`date -d today +%Y%m%d%H%M`

###############################################################################

/usr/bin/pt-table-checksumh='Master_ip',u='checksum',p='1q2w3e4r',P=3306--nocheck-replication-filters \

--no-create-replicate-table --replicate=pts.checksums--no-check-binlog-format--set-vars innodb_lock_wait_timeout=50 >> ${DIR}${TIME}.txt

###############################################################################

 

8、创建一致性检验结果文件目录

 

#mkdir-p/data/scripts/Consistency/

 

数据库主从一致性验证_第1张图片

 

注释:涉及的IP都是主库IP地址