pt-table-checksum工具應用

pathfinder_cui發表於2016-01-30

    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/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29620572/viewspace-1984556/,如需轉載,請註明出處,否則將追究法律責任。

相關文章