2012-02-11 88 views
7

使用一個MASTER和一個SLAVE的簡單複製設置,如何確保SLAVE和MASTER完全同步?如何確保MySQL複製SLAVE與複製MASTER完全同步?

現在是的,他們都從完全相同的圖像開始,複製工作並報告一切正常但是: *發生錯誤會停止複製,然後複製必須停止並稍後恢復。 *也許在SLAVE上意外發生了變化,然後它與MASTER不再一樣。 *其他可能會破壞同步的任何情況。

儘管可以對數據庫做一個大的mysqldump並比較這些文件,但我會對可以更容易實現的方法感興趣,也可以自動檢查以確保所有文件都同步。

謝謝

+0

http://dba.stackexchange.com/questions/17501/monitoring-replication-on-mysql – 2013-02-13 12:24:19

回答

8

您是否試過Percona工具包(以前稱爲Maatkit)?您可以使用其中一種工具,即pt-table-checksum作爲您的案例。您也可以在他們的網站上查看其他工具。

PT-表校驗和執行由 執行校驗和的查詢在主,其在與該主不一致的副本產生不同的結果 在線複製一致性檢查。可選的DSN 指定主控主機。如果發現任何差異,或者發生任何警告或錯誤 ,該工具的退出狀態爲 非零。

以下命令將連接到複製主上 本地主機,校驗每個表,並報告每 檢測副本的結果:如果您有MySQL服務器版本5.6.14或更高

+0

還沒有嘗試過,但似乎很有希望。謝謝:) – Collector 2012-02-12 12:15:59

+0

他們也有一個名爲'pt-table-sync'的工具,可以讓你在發現錯誤的情況下同步表格。它使用'pt-table-checksum'來查找潛在的問題並向主服務器發出聲明以強制從服務器進行復制,因此請自擔風險! – ESG 2012-12-28 19:27:19

3

,你可以使用MySQL複製同步檢查器。它包含在MySql服務器包中。旨在專門用於支持全局事務標識符(GTID)並且具有gtid_mode = ON的服務器。

此實用程序允許您檢查複製服務器的同步。它檢查主站和從站之間或兩個從站之間的數據一致性。該實用程序報告丟失的對象以及丟失的數據。 該實用程序可以在活動的複製拓撲上運行,應用同步過程來檢查數據。那些複製未激活的服務器仍然可以被檢查,但同步過程將被跳過。在這種情況下,用戶需要手動同步服務器。

See MySQL Documentation for more information

+0

編輯答案請cpbumz。這個工具非常有用, – Franco 2015-06-10 19:46:33

+0

這個工具就像一個魅力。我創建了一個單線程批處理文件來每天晚上運行此工具,然後使用另一個服務,我在電子郵件中獲得結果文件。順便說一句,GTID複製也是一種魅力。 – 2017-04-18 23:49:39

3

你是對是可疑的一個看似健康的主/從複製設置的!當我們突然收到來自check_mk的關於我們的主服務器上存在的數據庫的警報(我們的從服務器上不存在)時,我們運行良好,但主從狀態輸出很好!這有多令人不安?證明過程完整性的方法是使用校驗和來驗證數據。

我在網上看到很多嘮叨,推薦pt-table-checksum。然而,它的limitations被證明是太麻煩了,我們不能容忍。最重要的是,它需要甚至設置基於語句的複製(請參閱pt-table-checksum鏈接)。正如它在mysql 5.6 online documentation中所述(對於基於行的複製...)「所有更改都可以複製,這是最安全的複製形式。」基於聲明的複製還有其他一些缺點,使我們的開發人員感到緊張,因爲某些函數無法正確複製;請參閱文檔以獲取列表。

我們已經遇到了使用基於語句的複製的master和slave的問題,所以我們特別試圖避免它。

我們打算嘗試mysqlrplsync,它特別提到它"works independently of the binary log format (row, statement, or mixed)"。然而,它也提到gtid模式必須打開,它需要MySQL 5.6.14或更高版本......這意味着,我相信至少與RHEL7/CentOS 7一起交付的MySQL已經不在了。您需要獲取MySQL社區版,這是留給練習讀者but you can go here for the packageshere for the repos, including RHEL derivatives and Debian