當前位置:
首頁 >
搭建 mysql-mmm 高可用群集
發布時間:2025/7/25
21
豆豆
生活随笔
收集整理的這篇文章主要介紹了
搭建 mysql-mmm 高可用群集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
搭建 mysql-mmm 高可用群集
MMM 簡介 :
MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)復制,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。
MMM提供了自動和手動兩種方式移除一組服務器中復制延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由于MMM無法完全的保證數據一致性,所以MMM適用于對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。對于那些對數據的一致性要求很高的業務,非常不建議采用MMM這種高可用架構。
優點:
1 穩定和成熟的開源產品,經過了時間的考驗 核心技術是mysql自己的技術,只是使用腳本程序來控制,所以在原理上比較容易理解,而且管理能夠更智能化。
2 安裝簡單,配置簡單,使用簡單
3 功能強大 (HA,failover,tools套件,cluster模式可以一個monitor管理多個mmm組)
缺點:
1 由于架構里只有一個寫入點,所以擴展性是有限的,但是對一般中型企業夠用了。
解決方案:對于大應用可以采取垂直拆分到多個mmm架構的方式,使用mmm cluster來管理。
2 對于讀寫分離和讀負載均衡還是要程序來開發或者使用其他工具完成。
MMM 高可用架構 :
-
mmm_mond:監控進程,負責所有的監控工作,決定和處理所有節點角色活動。此腳本需要在監管機上運行。
-
mmm_agentd:運行在每個mysql服務器上的代理進程,完成監控的探針工作和執行簡單的遠端服務設置。此腳本需要在被監管機上運行。
-
mmm_control:一個簡單的腳本,提供管理mmm_mond進程的命令。
本案實例 :
| mysql-master1 | CentOS 7.3 x86_64 | mmm | 192.168.217.129 | 192.168.217.100 |
| mysql-master2 | CentOS 7.3 x86_64 | mmm | 192.168.217.130 | 192.168.217.100 |
| mysql-slave1 | CentOS 7.3 x86_64 | mmm | 192.168.217.131 | 192.168.217.200 |
| mysql-slave2 | CentOS 7.3 x86_64 | mmm | 192.168.217.132 | 192.168.217.210 |
| monitor | CentOS 7.3 x86_64 | mmm | 192.168.217.133 |
安裝 MMM 在所有服務器上安裝 :
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #配置ALI云源,然后安裝epel-release源。yum clean all && yum makecache #刪除緩存 下載到本地電腦緩存yum -y install epel-release #安裝epel 源 用于安裝 mmmyum -y install mysql-mmm* #安裝 mmm 服務 在所有服務器上安裝配置 MySQL 服務器 :
-
配置所有的 mysql ,server-id 不同之外其他都相同 :
-
把配置文件復制到其它3臺數據庫服務器上并啟動服務器
scp /etc/my.cnf root@192.168.217.130:/etc/ #對方有權限的用戶和IP地址 輸入yes 、密碼進行復制 systemctl restart mysqld.service #修改所有數據庫的 server-id 重啟服務 -
配置主主復制 :
-
配置兩臺從服務器 :
測試主從、主主、同步 情況
所有主機上都要配置 MMM
-
配置 mysql-master1 :
cd /etc/mysql-mmm/ vim mmm_common.conf …… <host default> cluster_interface ens32 #網卡名稱 ……replication_user replication #主從授權用戶 replication_password 123456 agent_user mmm_agent #代理用戶 agent_password 123456 .... <host db1> ip 192.168.217.129 #主服務器 mode master peer db2 </host> .... <host db2> ip 192.168.217.130 #主服務器 mode master peer db1 </host> .... <host db3> ip 192.168.217.131 #從服務器 mode slave </host> .... <host db4> ip 192.168.217.132 #從服務器 mode slave </host> .... <role writer> hosts db1, db2 ips 192.168.217.100 #主服務器虛擬IP地址 mode exclusive </role> .... <role reader> hosts db3, db4 ips 192.168.217.200, 192.168.217.210 #從服務器虛擬IP地址 mode balanced </role> scp mmm_common.conf root@192.168.217.130:/etc/mysql-mmm/ scp mmm_common.conf root@192.168.217.131:/etc/mysql-mmm/ scp mmm_common.conf root@192.168.217.132:/etc/mysql-mmm/ scp mmm_common.conf root@192.168.217.133:/etc/mysql-mmm/
配置 monitor 服務器上 :
cd /etc/mysql-mmm/ vim mmm_mon.conf ……ping_ips 192.168.217.129,192.168.217.130,192.168217.131,192.168.217.132 #數據庫服務器地址auto_set_online 10 #設置自動在線時間 ……<host default>monitor_user mmm_monitor #監控用戶monitor_password 123456 </host>在所有數據庫授權和修改 :
在所有數據庫上為mmm_agent授權 mysql>grant super, replication client, process on *.* to 'mmm_agent'@'192.168.217.%' identified by '123456';在所有數據庫上為mmm_moniter授權 mysql>grant replication client on *.* to 'mmm_monitor'@'192.168.217.%' identified by '123456';flush privileges; #刷新修改所有數據庫的mmm_agent.conf文件vim /etc/mysql-mmm/mmm_agent.confthis db1 #/根據規mmm_common.conf 配置中<host db1> 對應的IP地址 修改在所有數據庫服務器上啟動代理服務 systemctl start mysql-mmm-agent.service #開啟代理服務 systemctl enable mysql-mmm-agent.service #開機自啟動配置 monitor 服務器上 :
systemctl start mysql-mmm-monitor.service #啟動監控服務mmm_control show #查看各節點的情況db1(192.168.217.129) master/ONLINE. Roles: writer(192.168.217.100)db2(192.168.217.130) master/ONLINE. Roles: db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200)db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210) mmm_control checks all #各種OK 說明運轉正常 mmm_control move_role writer db2 #手動指定活躍服務器 注意:不會搶占 mmm_control show #查看各節點的情況db1(192.168.217.129) master/ONLINE. Roles:db2(192.168.217.130) master/ONLINE. Roles: writer(192.168.217.100)db3(192.168.217.131) slave/ONLINE. Roles: reader(192.168.217.200)db4(192.168.217.132) slave/ONLINE. Roles: reader(192.168.217.210)測試 :關閉 mysql-master1 服務 ,查看 mysql-master2 會不會搶占 。注意:等待一段時間查看 。
關閉 mysql-slave1 服務 ,mysql-slave1 虛擬IP會自動漂移到mysql-slave2上 ,mysql-slave2上會有兩個地址 。
轉載于:https://blog.51cto.com/13640803/2144621
總結
以上是生活随笔為你收集整理的搭建 mysql-mmm 高可用群集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本地IDC机房数据库容灾解决方案
- 下一篇: 15类Android通用流行框架