Mysql

InnoDB 的 MySQL 高可用性

  • May 21, 2018

我正在尋找具有大量事務的 MySQL 高可用性。我更喜歡使用 InnoDB Engine。

我更喜歡使用 MySQL Master - Slave Replication。但是,此選項為我們提供了應用程序從主設備到從設備的手動故障轉移。

問題

  • 主從同步的最大時間差是多少?
  • 除了這種方法之外,還有其他選擇高可用性的方法嗎?

雖然 Percona XtraDB Cluster 非常適合 Multimaster Replication 和 InnoDB,但它並不適合所有類型的工作負載。Bill Karwin 指出 MySQL 的非同步複製可能會因為工作量而更好:使用 Galera Cluster 而不是 Master/Slave Replication 的缺點是什麼?

如果您仍在尋找同步複製,您可以考慮將DRBDUCARP或 Linux Heartbeat 一起用於 DB VIP 和故障轉移管理。

在該設置下,Master(又名 DRBD Primary)在 DRBD 上安裝了一個數據卷,MySQL 正在執行,並且有一個用於自動故障轉移的 ucarp 機制。

從站(又名 DRBD 輔助站)沒有數據卷掛載。MySQL 沒有執行。DRBD 正在盡一切努力使塊設備與 DRBD Primary 同步。

DRBD 最適合在單個數據中心設置故障轉移時使用。由於同步延遲,不應將 DRBD 設置為在兩個不同的數據中心中使用 DRBD Primary 和 Secondary。我之前在這些文章中討論過這個

我推薦使用 DRBD 執行 PostgreSQL:PostgreSQL 故障轉移 - 我應該使用哪些工具?

使用 MySQL/DRBD 實現高可用性的缺點是只有一個 MySQL 實例在執行。好處是我在磁碟上保存了完整的數據副本。即使是硬故障轉移也會讓 InnoDB 崩潰恢復帶回寫入雙寫緩衝區(在 ibdata1 內)中的未送出數據。

如果您想要這一切,請在數據中心內使用 DRBD 集群,但在一個數據中心中使用 DRBD 主節點,以循環方式使用 MySQL 複製,在另一個數據中心中使用 DRBD 主節點。

您應該查看 MHA,這是一個 perl 腳本,它為 mysql 複製自動執行故障轉移。

引用自:https://dba.stackexchange.com/questions/58594