首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

使用 Percona Toolkit 解決 MySQL 主從資料不一致問題(上)

     編輯:MySQL 綜合教學

主從不一致常見成因

  1. 從庫誤寫入資料
  2. 執行非確定性查詢(如 UUID(), NOW())
  3. 事務混用事務型與非事務型表並回滾
  4. Binlog 或 Relay Log 損壞

傳統修復痛點

從庫下線 → 停應用 → 重新全量同步。資料量龐大時極其耗時、風險高。

Percona Toolkit 介紹

官方工具套件,含 pt-table-checksum(檢測不一致)、pt-table-sync(修復同步),可在線非阻塞式解決主從數據漂移。

安裝步驟

yum -y install perl-Time-HiRes
wget https://www.percona.com/downloads/percona-toolkit/2.2.13/tarball/percona-toolkit-2.2.13.tar.gz
tar -zxvpf percona-toolkit-2.2.13.tar.gz
cd percona-toolkit-2.2.13
perl Makefile.PL
make
make install

關鍵前置:修改 Binlog 格式為 ROW

主從雙方 my.cnf 設定:

binlog_format=ROW

三種 Binlog 格式對比

格式優點缺點
STATEMENT日誌量小,IO 少,效能高非確定性函數(sleep, last_insert_id, UDF)導致主從不一致
ROW記錄每行實際變更,內容清晰,避免函數/觸發器復制問題大量更新/ALTER TABLE 產生海量日誌
MIXED一般用 STATEMENT,特殊情況自動切 ROW判斷邏輯複雜,行為難預測

建議:為確保 pt-table-checksum/sync 準確性,強烈建議使用 ROW 格式。

binlog_format 設定 主從設定對比 工具架構圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved