pt-table-checksum 和基於行的複制
我使用的設置是主從復製配置中的 MySQL 5.5,但我們必須使用“混合”複製(基於語句和行),因為我們使用需要它的應用程序,而且它恰好在我們相同伺服器。
我們最近停止了複製,我想確保我們已經正確恢復。
我下載並安裝了 Percona Toolkit,但在這種情況下我似乎無法使用 pt-table-checksum,特別是因為基於行的複制:
2.27.5 限制使用基於行的複制 pt-table-checksum 的副本需要基於語句的複制,並且它在主伺服器上設置 binlog_format=STATEMENT,但由於 MySQL 的限制,副本不支持此更改。因此,校驗和不會復製過去任何使用基於行的複制的副本,這些複製是進一步副本的主控。該工具會自動檢查所有伺服器上的 binlog_format。看 -
$$ no $$檢查二進制日誌格式。(錯誤 899415)
是否有任何其他選項可以對基於行的複製表進行校驗和?
我在 Percona 論壇上發現了這個,它說它會起作用,但我不能讓它像它聲稱的那樣改變我的 cnf 文件。當我嘗試執行它時,它還會發出以下警告:
副本 mysql-b.example.com 具有 binlog_format MIXED,這可能導致 pt-table-checksum 中斷複製。請閱讀工具文件的限制部分中的“使用基於行的複制的副本”。如果您了解風險,請指定 –no-check-binlog-format 以禁用此檢查。
我不明白為什麼應用程序需要
MIXED
複製格式,因為MIXED
等於-based,但在執行“不安全”查詢時STATEMENT
更改為格式。ROW
因此,一個MIXED
- 兼容的應用程序應該同時兼容STATEMENT
和ROW
。正如您在此處看到的,如果檢測到的格式(伺服器端)是
ROW
orMIXED
,它會嘗試僅為會話動態更改它。在你的情況下,它抱怨這裡的一個奴隸(它需要SUPER
特權)。假設您沒有 3 節點鏈複製,或者您使用從站的 binlog 進行任何操作,您可以忽略帶有
--no-check-binlog-format
. 無需更改 my.cnf。問題是,僅會話更改語句會影響您的“需要 MIXED 的應用程序”嗎?pt-table-checksum
需要將其自己的計算作為語句完成,因為雜湊必須在主伺服器和從伺服器上獨立且同步地獨立計算(不是及時,而是與其他查詢相關)。