1,環境介紹,系統均爲CentOS6.5 64位
name | ip | 角色 | 須安裝的軟件 | DB | |
node2 | 172.16.251.22 | agent | mysql-mmm-agent | mariaDB10 | |
node3 | 172.16.251.23 | agent | mysql-mmm-agent | mariaDB10 | |
node4 | 172.16.251.24 | agent | mysql-mmm-agent | mariaDB10 | |
node5 | 172.16.251.25 | monitor | mysql-mmm-monitor | mysql-client |
2,簡單概述mysql-mmm
MMM即Master-Master Replication Manager for MySQL(mysql主主複製管理器)關於mysql主主複製配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候只有一個節點可以被寫入),這個套件也能對居於標準的主從配置的任意數量的從服務器進行讀負載均衡,原理是:在一組複製的服務器啓動虛擬ip,由於虛擬IP的存在,某一節點的故障,並不會影響正常的讀寫操作。(位於同一組的讀或寫服務器會有相同的虛擬IP對外提供服務)。
3,具體實現
1)主主複製的具體配置實現(node2與node3)
2)主從複製的具體配置實現(node3主與node4從)
詳細請查看:http://onlywyn.blog.51cto.com/204565/1395992
4,軟件安裝
1)在node2,node3,node4上面分別安裝 mysql-mmm-agent
yum install -y mysql-mmm-agent
2)node5上安裝 mysql-mmm-monitor
yuminstall -y mysql-mmm-monitor
5,配置文件的設置及詳解
編輯node2上的/etc/mysql-mmm/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 admin replication_password admin agent_user admin agent_password admin ##方便實現操作使用的用戶名和密碼一樣 </host> <host node2> #主機名 ip 172.16.251.22 #node2主機ip mode master #此節點的角色 peer node3 #與node3爲主-主複製架構 </host> <host node3> #主機名 ip 172.16.251.23 #node3主機ip mode master #此節點的角色 peer node2 #與node2爲主-主複製架構 </host> <host node4> #主機名 ip 172.16.251.24 #node4主機ip mode slave #此節點的角色 </host> <role writer> #定義mysql寫服務器 hosts node3,node2 #定義mysql寫服務器,所包括的主機 ips 172.16.251.35 #對外提供服務的VIP mode exclusive #工作模式 </role> <role reader> #定義mysql寫服務器 hosts node4,node3 #定義mysql讀服務器,所包括的主機 ips 172.16.251.5,172.16.251.15 #對外提供服務的VIP mode balanced #工作模式 </role>
配置/etc/mysql-mmm/mysql-mmm-agent.conf
配置/etc/mysql-mmm/mysql-mmm-mon.conf文件詳解,在節點node5上
6,測試
1)分別在node2,node3,node4啓動 agent
service mysql-mmm-agent start
2)在node5上啓動monitor,並安裝mysql客戶端程序(不用安裝服務器端)
service mysql-mmm-monitor start
yum install -y mysql
查看monitor連接狀態
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: node3(172.16.251.23) master/ONLINE. Roles: reader(172.16.251.15), writer(172.16.251.35) node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.5)
可以看三臺mysql服務器已經在線,node2、node3爲主主複製,node3、node4爲主從複製,對外提供服務的虛擬讀IP爲172.16.251.15、172.16.251.5,虛擬寫IP爲172.16.251.35
測試:停止node3上的mysql服務器
再查看三臺服務器的狀態,如下
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: writer(172.16.251.35) node3(172.16.251.23) master/HARD_OFFLINE. Roles: node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.15), reader(172.16.251.5)
可以發現,讀服務器已經自動切換至node2上面。再次啓動node3上的mysql服務器,如下:
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: writer(172.16.251.35) node3(172.16.251.23) master/AWAITING_RECOVERY. Roles: node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.15), reader(172.16.251.5)
此時node3處理等待發現(恢復)狀態,在監控端使用命令:mmm_control set_online node3
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: node3(172.16.251.23) master/ONLINE. Roles: reader(172.16.251.15), writer(172.16.251.35) node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.5)
後記:此次實驗過程中,對於虛擬出來的讀IP地址,在監控端是可以登陸進行正常的查訊操作(172.16.251.5、172.16.251.25),但是對於虛擬出來的寫IP(172.16.251.35),對外提供服務
須依賴真實的IP地址,顯然是不妥的地方,下次再續(^_^!!)