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