MMM
(Master-Master replication manager for MySQL,MySQL主主復制管理器)
是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL
Master-Master(雙主)復制,雖然叫雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一台備選主上提供部分讀服務,以加速在主主切換時備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個Slave 的read負載均衡
MMM提供了自動和手動兩種方式移除一組服務器中復制延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由於MMM無法完全保證數據的一致性,所以MMM使用與對數據的一致性要求不是很高,但是又想最大程度地保證業務可用性的場景
MMM是一套靈活的腳本程序,基於perl實現,用來對mysql replication 進行監控和故障遷移,並能管理MySQL Master-Master復制的配置
關於MMM高可用架構的說明
- mmm-mon:監控進行,負責所有的監控工作,決定和處理所有節點角色活動。此腳本需要再監管上運行
- mmm-agent:運行在每個MySQL服務器上的代理進程,完成監控的探針工作和執行簡單的遠端服務設置。此腳本需要在被監管機上運行
- mmm-control:一個簡單的腳本,提供管理mmm-mon進程的命令
- mysql-mmm的監管端會提供多個虛擬IP(VIP),包括一個可寫VIP,多個可讀VIP,通過監管的管理,這些IP會綁定在可用MySQL之上,當某一台MySQL宕機時,監管會將VIP遷移至其他MySQL
在整個監管過程中,需要在MySQL中添加相關授權用戶,以便MySQL可以支持監控主機的維護。授權的用戶包括一個mmm-monitor用戶和一個mmm-agent用戶
搭建MySQL多主多從模式
1、修改 master01 配置文件
2、把配置文件復制到其它 3 台數據庫服務器上並啟動服務器
注意:配置文件中的 server_id 要修改
3、 配置主主復制,兩台主服務器相互復制
(1)在兩台主服務器上都執行授予從的權限,從服務器上不需要執行
(2)在兩台主服務器上查看,記錄日志文件名稱和同步點
(3)在 master01 上配置同步
(4)在 master012上配置同步
4、配置主從復制,在兩台從服務器上做
5、測試主主、主從 同步情況
安裝配置 MySQL-MMM
1、在所有服務器上安裝 MySQL-MMM
在 master01 上對 MySQL-MMM 進行配置
把配置文件復制到其它 4 台主機,所有主機該配置文件內容都是一樣的
修改所有數據庫服務器的代理配置文件 mmm_agent.conf
在 monitor 監控服務器上修改監控配置文件 mmm_mon.conf
在所有數據庫上為 mmm_agent(代理進程)授權
在所有數據庫上為 mmm_moniter(監控進程)授權
在所有數據庫服務器上啟動 mysql-mmm-agent
在 monitor 服務器上啟動 mysql-mmm-monitor
在 monitor 服務器上測試群集
#查看各節點的情況
#檢測監控功能是否都完善,需要各種OK
#指定綁定 VIP 的主機
//故障測試
#停止 master01 確認 VIP 是否移動到 master02 上。注意:master01 主服務器恢復服務后,不會搶占
//客戶端測試
#在 master01 服務器上為 monitor 服務器地址授權登錄
#在 monitor 服務器上使用 VIP 登錄
#創建數據,測試同步情況