首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 高可用 MMM 架構原理與部署實戰:雙主一從+監控

     編輯:MySQL 資料庫相關知識

架構拓撲

  • Master (192.168.137.10) — Writer VIP 192.168.137.100
  • Backup (192.168.137.20) — 可切換為 Writer
  • Slave (192.168.137.30) — Reader VIP 192.168.137.120/130/140
  • Monitor (192.168.137.40) — 決策大腦,控制 VIP 漂移與角色切換

部署前置

  1. 所有節點 /etc/hosts 互解。
  2. DB 節點建立復制用戶 repl、監控用戶 mmm_monitor、代理用戶 mmm_agent。
  3. Monitor 節點安裝 mysql-mmm-monitor + mysql-mmm-agent;DB 節點僅裝 mysql-mmm-agent。

核心配置文件

mmm_common.conf(所有節點同份)

active_master_role writer
<host default>
  cluster_interface eth0
  pid_path /var/run/mysql-mmm/mmm_agentd.pid
  bin_path /usr/libexec/mysql-mmm/
  replication_user repl
  replication_password repl
  agent_user mmm_agent
  agent_password mmm_agent
</host>
<host master> ip 192.168.137.10 mode master peer backup </host>
<host backup> ip 192.168.137.20 mode master peer master </host>
<host slave> ip 192.168.137.30 mode slave </host>
<role writer>
  hosts master,backup
  ips 192.168.137.100
  mode exclusive
</role>
<role reader>
  hosts backup,slave
  ips 192.168.137.120,192.168.137.130,192.168.137.140
  mode balanced
</role>

mmm_agent.conf(各 DB 節點各自 this 指向自己)

mmm_mon.conf(Monitor 節點)

include mmm_common.conf
<monitor>
  ip 127.0.0.1
  pid_path /var/run/mysql-mmm/mmm_mond.pid
  bin_path /usr/libexec/mysql-mmm/
  status_path /var/lib/mysql-mmm/mmm_mond.status
  ping_ips 192.168.137.10,192.168.137.20,192.168.137.30
  auto_set_online 0
  <host default>
    monitor_user mmm_monitor
    monitor_password mmm_monitor
  </host>
  debug 0
</monitor>

啟動與驗證

# DB 節點
chkconfig mysql-mmm-agent on && service mysql-mmm-agent start
# Monitor 節點
chkconfig mysql-mmm-monitor on && service mysql-mmm-monitor start
# 驗證
mmm_control checks all
mmm_control show

常用運維操作

  • 手動切換 Writer:mmm_control move_role writer backup(Slave 自動重指向新 Master)。
  • 下線/上線節點:mmm_control set_offline backup / set_online backup。
  • 禁止 Writer 切換:在 writer role 中只保留 hosts master,故障時不漂移 VIP,但失去寫可用性。

原理要點

  1. Monitor 定期檢查(ping、MySQL 進程、復制線程、主從延遲),決定角色狀態。
  2. Agent 執行 Monitor 指令:修改 read_only、綁定/解綁 VIP、發起 Slave 切主。
  3. 狀態機:HARD_OFFLINE → AWAITING_RECOVERY → ONLINE,auto_set_online 控制自動上線延遲(預設 60s)。
  4. 所有 DB 建議在 my.cnf 設 read_only=1,由 Monitor 動態關閉 Writer 的 read_only。

總結

MMM 提供「雙主熱備 + 讀負載均衡 + VIP 自動漂移」,核心在 Monitor 決策、Agent 執行、復制拓撲自動調整。生產環境需注意主從延遲觸發誤切換、Monitor 單點風險(可雙監控心跳)。

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