Mysql群集架構(gòu)mmm高可用群集及服務(wù)器上線
【引自攀巖人生的博客】MMM即Multi-Master Replication Manager for MySQL:mysql多主復(fù)制管理器,基于perl實(shí)現(xiàn),關(guān)于mysql主主復(fù)制配置的監(jiān)控、故障轉(zhuǎn)移和管理的一套可伸縮的腳本套件(在任何時(shí)候只有一個(gè)節(jié)點(diǎn)可以被寫(xiě)入),MMM也能對(duì)從服務(wù)器進(jìn)行讀負(fù)載均衡,所以可以用它來(lái)在一組用于復(fù)制的服務(wù)器啟動(dòng)虛擬ip,除此之外,它還有實(shí)現(xiàn)數(shù)據(jù)備份、節(jié)點(diǎn)之間重新同步功能的腳本。
優(yōu)點(diǎn):高可用性,擴(kuò)展性好,出現(xiàn)故障自動(dòng)切換,對(duì)于主主同步,在同一時(shí)間只提供一臺(tái)數(shù)據(jù)庫(kù)寫(xiě)操作,保證的數(shù)據(jù)的一致性。當(dāng)主服務(wù)器掛掉以后,另一個(gè)主立即接管,其他的從服務(wù)器能自動(dòng)切換,不用人工干預(yù)。
缺點(diǎn):monitor節(jié)點(diǎn)是單點(diǎn),不過(guò)這個(gè)你也可以結(jié)合keepalived或者h(yuǎn)aertbeat做成高可用;至少三個(gè)節(jié)點(diǎn),對(duì)主機(jī)的數(shù)量有要求,需要實(shí)現(xiàn)讀寫(xiě)分離,還需要在前端編寫(xiě)讀寫(xiě)分離程序。在讀寫(xiě)非常繁忙的業(yè)務(wù)系統(tǒng)下表現(xiàn)不是很穩(wěn)定,可能會(huì)出現(xiàn)復(fù)制延時(shí)、切換失效等問(wèn)題。MMM方案并不太適應(yīng)于對(duì)數(shù)據(jù)安全性要求很高,并且讀、寫(xiě)繁忙的環(huán)境中。
二、部署實(shí)施
1、環(huán)境介紹
OS:centos7.2(64位)數(shù)據(jù)庫(kù)系統(tǒng):mysql5.7.13 關(guān)閉selinux
主機(jī) |
Ip |
Hostname |
Server--id |
Master1 |
192.168.119.129 |
Master1 |
1 |
Master2 |
192.168.119.130 |
Master2 |
2 |
Slave |
192.168.119.131 |
Slave |
3 |
Montior |
192.168.119.132 |
Montior |
4 |
使用yum進(jìn)行安裝相關(guān)的依賴(lài)包
安裝perl相關(guān)的庫(kù)
字有點(diǎn)小(cpan -i Algorithm::Diff Class::Singleton DBI DBD::mysql Log::Dispatch Log::Log4perl Mail::Send Net::ping Proc::Daemon Time::HiResParams::Validate Net::ARP)
在/etc/hosts里添加地址和主機(jī)名
測(cè)試能否ping通,進(jìn)行通信
在master1中添加mysql /etc/my.cnf主配置參數(shù)文件
在master2中添加/etc/my.cnf主配置文件
在slave中添加/etc/my.cnf主配置文件
修改完后關(guān)閉防火墻,啟動(dòng)mysql服務(wù)
其余兩臺(tái)master2、slave按照上圖執(zhí)行
創(chuàng)建主從復(fù)制環(huán)境,master1是master2、slave的主,master2是master1的主
創(chuàng)建授權(quán)連接用戶
兩臺(tái)master上都執(zhí)行
查看master1的狀態(tài)
在master2上建立連接實(shí)現(xiàn)主從復(fù)制
啟動(dòng)slave查看是否連接必須為yes
在slave上建立連接實(shí)現(xiàn)主從復(fù)制
把master2設(shè)為主跟上面的步驟一樣,只需把ip地址改一下即可
下圖是在master1上執(zhí)行的
上面的已經(jīng)把主主復(fù)制及主從復(fù)制做ok了
設(shè)置mysql-mmm
在master1上創(chuàng)建代理賬號(hào)、創(chuàng)建監(jiān)控賬號(hào),因?yàn)橐呀?jīng)主從復(fù)制了就可以在主上面創(chuàng)建了,會(huì)同步的
查看那兩臺(tái)是否都存在監(jiān)控和代理賬號(hào)
www用戶:mmm監(jiān)控用于對(duì)mysql服務(wù)器進(jìn)程健康檢查
qqq用戶:mmm代理用來(lái)更改只讀模式,復(fù)制的主服務(wù)器等
mysql-mmm安裝
在montior主機(jī)上安裝監(jiān)控程序
安裝下載后的包
在master1、master2、slave中安裝代理
配置mmm,要求必須四臺(tái)主機(jī)必須一樣的配置文件
安裝后的所有配置文件都存放在/etc/mysql-mmm/下面,管理和數(shù)據(jù)庫(kù)服務(wù)器上都要包含一個(gè)共同的文件mmm_common.cof,配置文件如下:
- active_master_role writer
- <host default>
- cluster_interface eno16777736
- pid_path /var/run/mmm_agentd.pid
- bin_path /usr/lib/mysql-mmm/
- replication_user rep
- replication_password 123
- agent_user qqq
- agent_password 123
- </host>
- <host master1>
- ip 192.168.119.129
- mode master
- peer master2
- </host>
- <host master2>
- ip 192.168.119.130
- mode master
- peer master1
- </host>
- <host slave>
- ip 192.168.119.131
- mode slave
- </host>
- <role writer>
- hosts master1,master2
- ips 192.168.119.10
- mode exclusive
- </role>
- <role reader>
- hosts master1,master2, slave
- ips 192.168.119.11,192.168.119.22,192.168.119.33
- mode balanced
- </role>
使用for循環(huán)語(yǔ)句分發(fā)給其他三臺(tái)主機(jī)
代理文件需要在master1、master2、slave中修改/mmm_agent.conf
this后面添加本地主機(jī)名就可以了
啟動(dòng)代理進(jìn)程 需要進(jìn)入腳本/etc/init.d/mysql-mmm-agent腳本
把mmm添加為系統(tǒng)服務(wù)并設(shè)置為自啟
能顯示出來(lái)ok證明前面做的沒(méi)有問(wèn)題,在三臺(tái)代理的主機(jī)都設(shè)置
編輯monitor主機(jī)的/etc/mysql-mmm/mmm_mon.conf
每個(gè)參數(shù)的意思
- <monitor>
- ip 127.0.0.1 設(shè)置只在本機(jī)監(jiān)聽(tīng),mmm_mond默認(rèn)監(jiān)聽(tīng)9988
- pid_path /var/run/mmm_mond.pid
- bin_path /usr/lib/mysql-mmm/
- status_path /var/lib/misc/mmm_mond.status
- ping_ips 192.168.119.129,192.168.119.130,192.168.119.131 用于測(cè)試網(wǎng)絡(luò)可用性 IP 地址列表
- auto_set_online 0 設(shè)置自動(dòng)online的時(shí)間,默認(rèn)是60s
- </monitor>
- <check default>
- check_period 5 檢查周期默認(rèn)為5s
- trap_period 10 一個(gè)節(jié)點(diǎn)被檢測(cè)不成功的時(shí)間持續(xù)trap_period秒
- timeout 2 檢查超時(shí)的時(shí)間
- restart_after 10000 在完成restart_after次檢查后,重啟checker進(jìn)程,默認(rèn)值:10000
- max_backlog 86400 記錄檢查rep_backlog日志的***次數(shù)
- </check>
- <host default>
- monitor_user www 監(jiān)控db服務(wù)器的用戶
- monitor_password 123 監(jiān)控db服務(wù)器的密碼
- </host>
- debug 0 debug 0正常模式,1為debug模式
啟動(dòng)監(jiān)控進(jìn)程在/etc/init.d/mysql-mmm-monitor文件中添加
添加成系統(tǒng)服務(wù)并設(shè)置為自啟動(dòng)
- chkconfig --add mysql-mmm-monitor
- chkconfig mysql-mmm-monitor on
- /etc/init.d/mysql-mmm-monitor start
把服務(wù)器上線
檢查所有的db服務(wù)器群集狀態(tài)
查看所有的群集狀態(tài)
查看命令,監(jiān)控命令參數(shù)有很多,可以從網(wǎng)上查找。