本文基於李珣博主的實戰經驗,詳細記錄在 Microsoft Azure 雲環境下部署 MySQL-MMM(Master-Master Replication Manager for MySQL)實現 MySQL 高可用的完整流程。
MMM(Master-Master Replication Manager) 是一套用 Perl 編寫的腳本工具集,用於管理雙主復制拓撲。其核心特點:
項目源碼:Google Code | 官網:mysql-mmm.org
| 進程 | 角色 | 部署位置 |
|---|---|---|
| mmm_mond | 監控守護進程,決策節點狀態、故障切換 | 獨立監控節點 |
| mmm_agentd | 代理守護進程,提供 RPC 接口供監控端調用 | 每台 MySQL 服務器 |
| mmm_control | 命令行管理工具,控制 mmm_mond | 管理端 |
環境共 5 個 VIP,分層如下:
| IP 類型 | 數量 | 用途 | 漂移特性 |
|---|---|---|---|
| 固定 IP | 2 | 各主節點固定管理 IP | 不漂移 |
| Writer VIP | 1 | 應用寫入入口 | 主備之間漂移 |
| Reader VIP | 2 | 應用讀取入口 | 主備之間漂移 |
正常狀態: Active Master 擁有 Writer + 1 Reader VIP;Standby Master 擁有 1 Reader VIP。
故障狀態: Active 故障時,所有 3 個 VIP 全部漂移至 Standby。
| 角色 | IP | 主機名 | Server ID |
|---|---|---|---|
| Monitoring | 10.0.0.6 | monitor | - |
| Master1 | 10.0.0.4 | db1 | 1 |
| Master2 | 10.0.0.5 | db2 | 2 |
| Slave1 | 10.0.0.7 | db3 | 3 |
業務 VIP:
Writer: 10.0.0.80 | Reader1: 10.0.0.90 | Reader2: 10.0.0.100
下篇將詳細講解:
1. Azure 環境下的網絡/安全組配置
2. MySQL 雙主復制參數調優
3. MMM 配置文件 mmm_common.conf 詳細參數解析
4. 故障演練與監控告警接入