数据库数据一致性检验部署文档
1、pt-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:检查时候发生错误和警告的数量。
DIFFS:0表示一致,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
7、Consistency.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/
注释:涉及的IP都是主库IP地址