pt-table-checksum工具應用
1.認真看錯誤提示,弄不清楚狀況的時候打開debugPTDEBUG=1
2.10.10.10.10為主,其它ip為從
3.h=10.10.10.10,u=checksums,p=checksums 中間一定不能有空格,不然會報錯,本人排查這個錯誤花了很長時間
一:sakila庫的film_actor表的數據檢測與同步
1,在主庫和從庫上面添加用戶:
GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO 'checksums'@'10.10.10.10' IDENTIFIED BY 'checksums';
2.檢測sakila庫的film_actor表的數據主從是否一致
PTDEBUG=1 pt-table-checksum --no-check-binlog-format --no-check-replication-filters --recursion-method=processlist --replicate=test.checksums --databases=sakila --tables=film_actor -h 10.10.10.10 -P8888 -u checksums -p checksums
3,根據checksum的結果恢復所有從庫的film_actor數據
PTDEBUG=1 pt-table-sync --replicate=test.checksums --recursion-method=processlist --database=sakila --tables=film_actor h=10.10.10.10,P=8888,u=checksums,p=checksums --print --execute
------------------------------------------------------------------------------------------------------------------------------
二:檢測tmp庫數據是否一致
pt-table-checksum --no-check-binlog-format --no-check-replication-filters --recursion-method=processlist --replicate=test.checksums --databases=tmp -h 10.10.10.10 -P8888 -u checksums -p checksums
1,根據checksum的結果恢復所有從庫的數據
PTDEBUG=1 pt-table-sync --replicate=test.checksums --recursion-method=processlist --no-check-triggers --no-check-child-tables --no-foreign-key-checks h=10.10.10.10,P=8888,u=checksums,p=checksums --print --execute
(有外鍵約束要加參數 --no-check-child-tables --no-foreign-key-checks,不然可能把子表所有的數據都刪除掉)
(--no-check-triggers,不檢測觸發器)
2,根據checksum的結果只恢復10.10.10.11的數據
pt-table-sync --print --execute --replicate=test.checksums --sync-to-master h=10.10.10.11,P=8888,u=checksums,p=checksums
3,恢復從庫192.168.6.91的數據(這個從庫所有的數據都和主保持一致,除了系統表和checksums表)
pt-table-sync --execute --print --sync-to-master h=192.168.6.91,P=8888,u=checksums,p=checksums
----------------------------------------------------------------------------------------------------------------------------
執行完pt-table-sync后可再執行一次pt-table-checksum檢測主從數據是否一致,可以執行下面的sql語句,如果結果為空則說明主從數據一致
select * from test.checksums where master_cnt <>this_cnt OR master_crc<>this_crc OR ISNULL(master_crc)<>ISNULL(this_crc);
http://blog.itpub.net/28939273/viewspace-1993010/