測試 MySQL 資料庫複製/同步

測試 MySQL 資料庫複製/同步

我正在設定一個 MySQL 主資料庫,該資料庫複製到幾個從資料庫。

我的問題是監視和/或測試從屬資料庫是否最新的最佳實踐是什麼,並且當出現導致複製停止的錯誤時會向管理員發出警報。

我搜尋過監控工具,但未能找到任何合適的工具。

另外,測試從站之間同步的「最佳實踐」方法是什麼。有沒有類似資料庫複製的單元測試之類的東西?

如果我對此事的無知冒犯了任何人,我深表歉意。

答案1

複製的最大問題是檢查

  1. 節點全部啟動,
  2. 所有節點都在通訊(不是裂腦)
  3. 並處理複製日誌
  4. 和複製滯後

1、3 和 4 可以在相關節點上使用 SHOW MASTER STATUS / SHOW SLAVE STATUS 來捕獲,儘管複製延遲只有 1 秒的精度並且僅跨每一跳。 Percona 工具包具有用於獲取更準確的複製滯後的腳本。

使用多主複製(例如,佩爾科納)節省了很多痛苦,但需要額外的努力/軟體來設定。

如果ndo之間的網路發生故障,那麼進程可以全部運作良好 - 但將無法傳輸資料 - 您需要監視每個節點以檢查它是否可以聯繫上游節點。

一個 MySQL 主資料庫,複製到幾個從資料庫

最佳實踐是將其中一個從站也指定為主站 - 雙向複製。這樣,您可以在發生中斷時輕鬆切換,或執行重建索引、備份、架構變更等維護任務。

根據從屬節點的數量,您可能還需要指定一個扇出節點傳播更改。

在管理升級、安排腳本來收集資料等方面,有很多可用的工具可以做到這一點 - 我使用 nagios,許多其他人也使用。

答案2

我的問題是監視和/或測試從屬資料庫是否最新的最佳實踐是什麼,

對於簡單的測試,在主伺服器上插入/更新資料並確保將其複製到從伺服器。

但對於一致性檢查,pt表校驗和這就是您正在尋找的。

例如:

pt-table-checksum localhost --empty-replicate-table --databases db --nocheck-replication-filters --replicate percona.checksums > /var/log/pt-table-checksum.log 2>&1

當出現導致複製停止的錯誤時,這會提醒管理員。

如果您使用 Nagios,檢查mysql_health插件可以幫助監控從站狀態(運行或不運行)。但要監控一致性,請看一下pmp 檢查 pt 表校驗和插入。

不要錯過pt 表同步如果您有任何不一致的地方:

pt-table-sync -v --print --sync-to-master h=localhost,D=db,t=table
pt-table-sync -v --execute --sync-to-master h=localhost,D=db,t=table

請記住,您可能應該--print首先使用該選項。

答案3

在奴隸做

SHOW SLAVE STATUS\G;

如果您收到這些資訊:

   Slave_IO_Running: Yes
  Slave_SQL_Running: Yes

這意味著您幾乎已經完成了,要測試它,請嘗試在 MASTER 上執行任何寫入事務,並確保它們在從屬裝置上自動複製

答案4

我搜尋過監控工具,但未能找到任何合適的工具。

您可以使用適用於 Cacti 的 Percona MySQL 監控模板。檢視 MySQL 複製範本(使用該pt-heartbeat工具)。

乾杯

相關內容