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

MySQL MMM (Master-Master Replication Manager) 高可用架構解析

     編輯:MySQL 綜合教學

什麼是 MMM?

MySQL Master-Master Replication Manager (MMM):一套用 Perl 編寫的腳本工具集,用於管理雙主/多主復制拓撲,提供虛擬 IP (VIP) 故障轉移、讀寫分離路由、狀態監控功能,解決標準主從/雙主架構中的單點故障 (SPOF) 問題。

名稱由來:作者戲稱 "When you eat something tasty, you say: Mmm..." (吃好東西發出的聲音)。

核心架構組件

組件角色部署建議
mmm_mond (Monitor Daemon)核心決策大腦:監控 MySQL 狀態、複製延遲、決定 VIP 漂移、發送控制指令。**獨立部署** 於管理節點 (至少 1 台,推薦 2 台高可用)。**不要**部署在 MySQL 節點上。
mmm_agentd (Agent Daemon)運行在**每台 MySQL 服務器**上:接收 mond 指令 (掛載/卸載 VIP、設置 read_only、重啟複製)、回報本機狀態。每台 MySQL (Master/Slave) 必裝。
mmm_control命令行客戶端:人工干預 (手動切主、下線維護、查看狀態)。管理節點/運維機安裝。

核心功能

  1. VIP 管理 (寫入入口):唯一寫入 VIP (write_vip) 始終指向當前活躍 Master。Master 故障 -> 自動漂移到備選 Master。
  2. 讀負載均衡 (可選):讀 VIP (read_vip) 可配置輪詢指向多個 Slave。
  3. 複製拓撲管理:自動處理 CHANGE MASTER TO、START/STOP SLAVE、SET GLOBAL read_only。
  4. 分腦保護:僅當監控端確認舊 Master 真正不可達 (網絡/進程/複製中斷) 才觸發切換,配合 ping、ssh 多重檢查。

部署拓撲示例 (官方推薦 5 節點高可用)

+----------------+       +----------------+
|  Manager 1     |       |  Manager 2     |  (mmm_mond 高可用,虛擬IP管理)
|  (mmm_mond)    |       |  (mmm_mond)    |
+-------+--------+       +-------+--------+
        |                       |
        |   Management Network  |
        v                       v
+-------+--------+       +-------+--------+       +-------+--------+
|  Master 1      | <---> |  Master 2      | <---> |  Slave 1       |
| (Write VIP)    |  Async| (Candidate)    |  Async| (Read VIP)     |
| mmm_agentd     |       | mmm_agentd     |       | mmm_agentd     |
+----------------+       +----------------+       +----------------+
        ^                       ^                       ^
        |   Replication Network (私有網段)               |
        +-------------------------------------------------+

關鍵配置點 (/etc/mmm/mmm_common.conf)

# 監控間隔

  interval 10          # 每 10 秒檢查一次
  timeout 5            # 連接超時


# 數據庫連接 (Agent 端配置 /etc/mmm/mmm_agent.conf)

  db_user mmm_agent
  db_password AgentPass123!
  # 允許 mond 通過 SSH 重啟 mysqld (可選)
  ssh_user mysql
  ssh_port 22


# VIP 定義

  ip 192.168.1.10
  mode master
  peer db2
  vip_write 192.168.1.100  # 應用寫入入口
  vip_read 192.168.1.101   # 讀入口 (可選)



  ip 192.168.1.11
  mode master
  peer db1
  vip_write 192.168.1.100
  vip_read 192.168.1.101



  ip 192.168.1.12
  mode slave
  vip_read 192.168.1.101

現狀與替代方案 (2024 視角)

方案狀態特點
MMM停止維護 (最後更新 2014 年)Perl 腳本、依賴 SSH/VIP、無共識協議、分腦風險較大、不支援 GTID 複制管理。
MHA (Master High Availability)社區維護緩慢主流選擇多年,支援 GTID、自動故障轉移快、但需外部 VIP 管理 (keepalived/VRRPD)。
Orchestrator活躍推薦 (GitHub/OpenARK)可視化拓撲、自動故障轉移、支援 GTID/偽 GTID、HTTP API、無 VIP 依賴 (配合 Proxy)。
MySQL InnoDB Cluster / Group Replication官方原生方案Paxos 協議強一致、自動故障轉移、內建 Router (Proxy)、MySQL 8.0+ 生產就緒。
ProxySQL + Orchestrator/Gtid主流架構ProxySQL 做讀寫分離/路由/熔斷,Orchestrator 做拓撲管理/故障轉移。

結論

MMM 具有歷史意義,但**新項目嚴禁使用**。請直接採用 MySQL InnoDB Cluster (Group Replication) + MySQL Router 或 Orchestrator + ProxySQL 架構,獲得原生一致性協議保障、可視化運維、雲原生兼容性。

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