Mysql

mysql master-master setup作為一種簡單的主從提升方式

  • August 25, 2013

我正在嘗試查看以下計劃是否可行。這裡的目標是能夠進行 HA(正常執行時間),而不一定是負載——在一台 MySQL 5.5 伺服器(使用 innodb)上寫入很好,但在數據庫關閉時實際上不可能。

目前,我有一個主從複製設置,它工作正常,除了它沒有自動升級(顯然)。我打算做的是設置主-主複製,以可能使用 Amazon Route 53 DNS 故障轉移(執行狀況檢查)來執行此“自動升級”。我要避免的是不必使用自動遞增技巧,因為“業務人員”已經習慣了自動遞增 PK 作為連續數字(是的,我知道這很糟糕,但數據來自 2004 年)。

因此,在沒有自動增量衝突預防位的情況下設置主-主複製。主 master 是 db1.domain.com,輔助 master 是 db2.domain.com

在 Amazon Route 53 中,為 db.domain.com 設置 DNS 故障轉移記錄 -> 主故障轉移是 db1.domain.com -> 在 IP 地址埠 3306 上進行 TCP 執行狀況檢查 -> 輔助故障轉移是 db2.domain.com -> IP 地址埠 3306 上的 TCP 健康檢查

大多數情況下 (99%),除非 tcp://db1.domain.com:3306 已死,否則 db1.domain.com 將在對 db.domain.com 的 DNS 命中時提供。事實上,希望這是 100%。這樣做的可能缺點是失去主鍵(衝突),我認為失去一個訂單是可以的。我們是一家低數據量的 B2B 企業,如果發生這種情況(比如訂單消失),我們可以打電話給我們的客戶。

這聽起來像是一個好計劃嗎?

然後,我還將在 db1.domain.com 上執行另一個從屬複製,作為從屬 db1.domain.com 的“主”複製——不知道為什麼,可能是因為 SELECT 很重?

為數據庫進行 DNS 故障轉移並不是那麼簡單。有很多原因,但這裡有一些可能會導致問題。

  • 許多應用程序使用連接池庫,因此它們可能會創建到數據庫的持久連接,因此假設 DNS 故障轉移實際上可能會導致所有應用程序流量(讀取和寫入)轉到新伺服器,並防止寫入可能發生的情況兩者都發生並導致主鍵衝突。
  • 現在,如果主數據庫實際上發生故障,上述情況可能不會成為問題,因為這將終止所有存在的 SQL 連接,從而導致任何雙重寫入問題得到緩解。在高負載下,MySQL 伺服器開始拒絕新連接時會出現問題。將觸發 DNS 故障轉移,現有連接保留在目前伺服器上,並創建到故障轉移目標的新連接。現在你有麻煩了!
  • 複製滯後和多主複製可以為這個等式添加另一個切線。在進行安全故障轉移時,您真的不想離主伺服器太遠;因此可能發生的問題不勝列舉。

看看像 ScaleArc 這樣的解決方案。它具有狀態感知能力並理解複製滯後等內容,並提供一些簡潔的 HA 選項,以及許多其他功能,如記憶體、分析等。

引用自:https://serverfault.com/questions/519187