1. 程式人生 > >percona toolkit 更新至一致性檢查

percona toolkit 更新至一致性檢查

percona toolkit 安裝

依賴 yum install per-DBD-MySQL perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes perl-TermReadKey   下載安裝 https://www.percona.com/downloads/percona-toolkit/LATEST/  選擇版本  作業系統 安裝軟體(主庫,最好主從都安裝) rpm -ivh percona-toolkit-3.0.12-1.el6.x86_64.rpm

許可權(主庫從庫)

GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO 'check'@'X.X.X.%' identified by 'XXXX';

 

1、一致性檢查工具 pt-table-checksum  pt-table-sync

1.1 問題

主從replication

一個比較容易遇到的錯誤

show slave status Duplicate entry '2' for key 'PRIMARY', Error_code: 1062

常用處理方法 

檢查/刪除從庫冗餘資料,重新由replication操作。

或者確認從庫資料與主庫一致,直接set global sql_slave_skip_counter=1 並重啟stop slave;start slave   (skip並不檢查一致性,只考慮rely log是否未報錯 )

由於過多skip人為因素、statement複製模式帶來的語句操作差異,等,資料庫主從可能處於不一致狀態

1.2 問題復現

測試 從庫新增2     主庫新增2和3 
  show slave status Seconds_Behind_Master: NULL Last_SQL_Error: Could not execute Write_rows event on table test.t1; Duplicate entry '2' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql50-bin.000001, end_log_pos 1077     從庫skip set global sql_slave_skip_counter=1 並重新啟動slave stop slave start slave   從庫資料  

由於操作不嚴謹,導致主從資料不一致。此時slave狀態是正常的。

 

1.3 一致性檢查工具pt-table-checksum

在主庫上檢查 可以不加--databases --tables項全表掃描 pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=percona.checksum --create-replicate-table --databases=test --tables=t1 h=10.27.X.X,u=check,p=XXXXXXXXX,P=3306

 

當slave異常時  

 

當主從資料不一致時

  

 

1.4 修復工具pt-table-sync

僅檢查庫表資料,不檢查結構、索引等 在主庫上執行 pt-table-sync --replicate=percona.checksum h=主庫ip,u=check,p=xxx h=從庫ip,u=check,p=XXXX--print 提示操作方法

 

或者直接--exec 自動修復

 

原測試用不一致的 2 2 變成2 222  

2 slowlog 工具pt-query-digest

./pt-query-digest  slow.log  >digest.log
另另可加上各種引數輔助
如分析最近12小時內的查詢: pt-query-digest  --since=12h  slow.log > slow_report2.log


 3資訊檢查 pt-mysql-summary