首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MMM 高可用 MySQL 集群方案:架構、部署與故障切換實戰

     編輯:MySQL 綜合教學

MMM 高可用 MySQL 集群方案:架構、部署與故障切換實戰

MMM (Master-Master Replication Manager for MySQL) 是一套基於 Perl 的腳本工具集,提供 MySQL 主主復制環境下的監控、故障遷移與管理功能,實現讀寫分離與高可用。

核心優缺點

優點缺點
穩定性好、自動故障切換、Slave 自動重新指向新 Master、支撐讀寫分離架構 需多節點多 IP 成本高、讀寫極繁忙場景下復制延遲可能導致切換失效、不適合極高數據安全性與高併發寫入場景

架構組件與工作原理

  • mmm_mond(監控進程,管理節點):監控所有 DB 狀態,決策角色切換。
  • mmm_agentd(代理進程,各 DB 節點):執行監控探測、遠程服務控制。
  • mmm_control(管理腳本):查看集群狀態、管理 mmm_mond。

IP 規劃(雙主多從 + 虛擬 IP)

角色主機名物理 IP虛擬 IP (VIP)
Master1 (Active Writer)db1192.168.1.210Writer VIP: 192.168.1.230
Master2 (Standby Writer)db2192.168.1.211
Slave1db3192.168.1.250Reader VIPs: 192.168.1.231~.234
Slave2db4192.168.1.209
Monitormonitor192.168.1.21

正常態:Master1 持有 Writer VIP + 1 個 Reader VIP,Master2 持有 1 個 Reader VIP,Slave 各持有 1 個 Reader VIP。故障時 VIP 自動漂移。

部署步驟速覽

  1. 安裝套件:Monitor 節點裝全量 mysql-mmm*;DB 節點裝 mysql-mmm-agent(需 EPEL 源)。
  2. 配置主從復制:Master1→Slave1/2,授權復制用戶 repl。
  3. 所有 DB 節點 my.cnf 添加 read_only=1(由 MMM 控制寫入權限)。
  4. 創建監控/代理賬號:
    • mmm_monitor@192.168.1.%:REPLICATION CLIENT
    • mmm_agent@192.168.1.%:SUPER, REPLICATION CLIENT, PROCESS
  5. 配置文件(/etc/mysql-mmm/):
    • mmm_common.conf:所有節點共享,定義主機、角色、VIP 映射、認證信息。
    • mmm_mon.conf:僅 Monitor,定義監控參數、ping 節點、自動上線閾值。
    • mmm_agent.conf:各 DB 節點,指定 this dbX 對應 common 中的 host 段。
  6. 啟用服務:/etc/default/mysql-mmm-agent 設置 ENABLED=1;啟動 mysql-mmm-monitor(Monitor)與 mysql-mmm-agent(各 DB)。
  7. 手動上線節點:mmm_control set_online db1 等,觀察 mmm_control show 狀態轉為 ONLINE 並分配 VIP。

故障切換驗證

  1. 關閉 Master1 MySQL,mmm_control show 顯示 Master1 變 HARD_OFFLINE,Writer VIP 漂移至 Master2,Slave 自動重新指向 Master2 復制。
  2. Master1 恢復後,手動切回:mmm_control move_role writer db1。

進階:結合 Amoeba 實現讀寫分離

部署第 6 台服務器運行 Amoeba(Java 開發的 MySQL 代理),配置 dbServers.xml、amoeba.xml 定義寫節點(Writer VIP)與讀節點池(Reader VIPs),啟動監聽 8066 端口。測試顯示讀請求在多個 Reader VIP 間輪詢負載均衡,寫請求路由至 Writer VIP。

總結

MMM 提供了一套成熟的主主高可用腳本框架,通過虛擬 IP 漂移實現寫入單點與讀取負載均衡。但受限於異步復制延遲與腳本級故障檢測精度,極高併發寫入場景建議評估 MHA、Galera Cluster 或 InnoDB Cluster 等更強一致性方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved