MMM關於MySQL高可用的解決方案
文章轉自http://namesam.blog.51cto.com/12364721/1913232
一、MMM簡介:
MMM即Multi-Master Replication Manager for MySQL:mysql多主複製管理器,基於perl實現,關於mysql主主複製配置的監控、故障轉移和管理的一套可伸縮的指令碼套件(在任何時候只有一個節點可以被寫入),MMM也能對從伺服器進行讀負載均衡,所以可以用它來在一組用於複製的伺服器啟動虛擬ip,除此之外,它還有實現資料備份、節點之間重新同步功能的指令碼。MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現伺服器的故障轉移,從而實現mysql的高可用。MMM不僅能提供浮動IP的功能,如果當前的主伺服器掛掉後,會將你後端的從伺服器自動轉向新的主伺服器進行同步複製,不用手工更改同步配置。這個方案是目前比較成熟的解決方案。詳情請看官網:
優點:高可用性,擴充套件性好,出現故障自動切換,對於主主同步,在同一時間只提供一臺資料庫寫操作,保證的資料的一致性。當主伺服器掛掉以後,另一個主立即接管,其他的從伺服器能自動切換,不用人工干預。
缺點:monitor節點是單點,不過這個你也可以結合keepalived或者haertbeat做成高可用;至少三個節點,對主機的數量有要求,需要實現讀寫分離,還需要在前端編寫讀寫分離程式。在讀寫非常繁忙的業務系統下表現不是很穩定,可能會出現複製延時、切換失效等問題。MMM方案並不太適應於對資料安全性要求很高,並且讀、寫繁忙的環境中。
適用場景:
MMM的適用場景為資料庫訪問量大,並且能實現讀寫分離的場景。
Mmm主要功能由下面三個指令碼提供:
mmm_mond負責所有的監控工作的監控守護程序,決定節點的移除(mmm_mond程序定時心跳檢測,失敗則將write ip浮動到另外一臺master)等等
mmm_agentd執行在mysql伺服器上的代理守護程序,通過簡單遠端服務集提供給監控節點
mmm_control通過命令列管理mmm_mond程序
在整個監管過程中,需要在mysql中新增相關授權使用者,授權的使用者包括一個mmm_monitor使用者和一個mmm_agent使用者,如果想使用mmm的備份工具則還要新增一個mmm_tools使用者。
轉載於:https://blog.51cto.com/zfish1987/1962098