pt-table-checksum 安裝:
:wget www.percona.com/downloads/percona-toolkit/2.2.2/percona-toolkit-2.2.2.tar.gz
tar xf percona-toolkit-{version}.tar.gz
cd percona-toolkit-{version} # 進入解壓後的目錄
vim README # 查看安裝手冊
必備條件:
安裝 yum install perl mysql perl-DBD-MySQL -y
pt-table-checksum安裝步驟:
perl
Makefile.PL
make
make install
一、在master上操作:
1.在Master庫上授權:
GRANT update,insert,delete,SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO checksum@'Master ip' IDENTIFIED BY '123' ;
2、手工建在制定的庫下(例如pts) checksums 表,儲存pt-table-checksum 檢測資料:
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;
a.執行pt-table-checksum 檢查主從資料表:
/usr/bin/pt-table-checksum h='1.1.1.2',u='checksum',p='123',P=3306 --databases test --tables t --nocheck-replication-filters --create-replicate-table --replicate=pts.checksums --no-check-binlog-format --lock-wait-timeout=120
TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
06-08T10:41:16 0 0 2 1 0 0.338 test.t
上面顯示的參數說明:
TS :完成檢查的時間。
ERRORS :檢查時候發生錯誤和警告的數量。
DIFFS :0表示一致,1表示不一致。當指定--no-replicate-check時,會一直為0,當指定--replicate-check-only會顯示不同的資訊。
ROWS :表的行數。
CHUNKS :被劃分到表中的塊的數目。
SKIPPED :由於錯誤或警告或過大,則跳過塊的數目。
TIME :執行的時間。
TABLE :被檢查的表名。
b.執行pt-table-sync 列印主從資料不一致的表:
/usr/bin/pt-table-sync --replicate=pts.checksums h=1.1.1.2,u=checksum,p=123 h=1.1.1.4,u=checksum,p=123 --print
c.恢複主從不一致的資料(在Master執行且以Master的結果為準)
/usr/bin/pt-table-sync --replicate=pts.checksums h=1.1.1.2,u=checksum,p=123 h=1.1.1.4,u=checksum,p=123 --execute
pt-table-checksum是一個線上驗證主從資料一致性的工具,主要用於以下情境:
1. 資料移轉前後,進行資料一致性檢查
2. 當主從複製出現問題,待修複完成後,對主從資料進行一致性檢查
3. 把從庫當成主庫,進行資料更新,產生了”髒資料”
4. 定期校正
工作原理:
pt-table-checksum在主上執行檢查語句線上檢查mysql複製的一致性,把表分塊(hunk-size),產生replace語句,然後通過複製傳遞到從,再通過update更新master_src的值。通過檢測從上this_src和master_src的值從而判斷複製是否一致。