數據庫數據一致性檢驗部署文檔mysql
1、pt-table-checksum 安裝:sql
各個版本一覽地址:http://www.percona.com/downloads/percona-toolkit/數據庫
咱們所需軟件下載地址:vim
http://www.percona.com/downloads/percona-toolkit/2.2.2/ percona-toolkit-2.2.2.tar.gzbash
具體的安裝步驟以下:ide
yum install perl mysql perl-DBD-MySQL -y(安裝percona-toolkit所須要的軟件包)this
tar -zxvf percona-toolkit-2.2.2.tar.gz spa
cd percona-toolkit-2.2.2orm
perl Makefile.PL blog
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地址