MMM即Multi-Master Replication Manager for MySQL:mysql多主復(fù)制管理器,基于perl實現(xiàn),關(guān)于mysql主主復(fù)制配置的監(jiān)控、故障轉(zhuǎn)移和管理的一套可伸縮的腳本套件(在任何時候只有一個節(jié)點(diǎn)可以被寫入),MMM也能對從服務(wù)器進(jìn)行讀負(fù)載均衡,所以可以用它來在一組用于復(fù)制的服務(wù)器啟動虛擬ip,除此之外,它還有實現(xiàn)數(shù)據(jù)備份、節(jié)點(diǎn)之間重新同步功能的腳本。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、越城網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為越城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
優(yōu)點(diǎn):高可用性,擴(kuò)展性好,出現(xiàn)故障自動切換,對于主主同步,在同一時間只提供一臺數(shù)據(jù)庫寫操作,保證的數(shù)據(jù)的一致性。當(dāng)主服務(wù)器掛掉以后,另一個主立即接管,其他的從服務(wù)器能自動切換,不用人工干預(yù)。
缺點(diǎn):monitor節(jié)點(diǎn)是單點(diǎn),不過這個你也可以結(jié)合keepalived或者h(yuǎn)aertbeat做成高可用;至少三個節(jié)點(diǎn),對主機(jī)的數(shù)量有要求,需要實現(xiàn)讀寫分離,還需要在前端編寫讀寫分離程序。在讀寫非常繁忙的業(yè)務(wù)系統(tǒng)下表現(xiàn)不是很穩(wěn)定,可能會出現(xiàn)復(fù)制延時、切換失效等問題。MMM方案并不太適應(yīng)于對數(shù)據(jù)安全性要求很高,并且讀、寫繁忙的環(huán)境中。
二、部署實施
1、環(huán)境介紹
OS:centos7.2(64位)數(shù)據(jù)庫系統(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)的依賴包
安裝perl相關(guān)的庫
字有點(diǎn)?。╟pan -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ī)名
測試能否ping通,進(jìn)行通信
在master1中添加mysql /etc/my.cnf主配置參數(shù)文件
在master2中添加/etc/my.cnf主配置文件
在slave中添加/etc/my.cnf主配置文件
修改完后關(guān)閉防火墻,啟動mysql服務(wù)
其余兩臺master2、slave按照上圖執(zhí)行
創(chuàng)建主從復(fù)制環(huán)境,master1是master2、slave的主,master2是master1的主
創(chuàng)建授權(quán)連接用戶
兩臺master上都執(zhí)行
查看master1的狀態(tài)
在master2上建立連接實現(xiàn)主從復(fù)制
啟動slave查看是否連接必須為yes
在slave上建立連接實現(xiàn)主從復(fù)制
把master2設(shè)為主跟上面的步驟一樣,只需把ip地址改一下即可
下圖是在master1上執(zhí)行的
上面的已經(jīng)把主主復(fù)制及主從復(fù)制做ok了
設(shè)置mysql-mmm
在master1上創(chuàng)建代理賬號、創(chuàng)建監(jiān)控賬號,因為已經(jīng)主從復(fù)制了就可以在主上面創(chuàng)建了,會同步的
查看那兩臺是否都存在監(jiān)控和代理賬號
www用戶:mmm監(jiān)控用于對mysql服務(wù)器進(jìn)程健康檢查
qqq用戶:mmm代理用來更改只讀模式,復(fù)制的主服務(wù)器等
mysql-mmm安裝
在montior主機(jī)上安裝監(jiān)控程序
安裝下載后的包
在master1、master2、slave中安裝代理
配置mmm,要求必須四臺主機(jī)必須一樣的配置文件
安裝后的所有配置文件都存放在/etc/mysql-mmm/下面,管理和數(shù)據(jù)庫服務(wù)器上都要包含一個共同的文件mmm_common.cof,配置文件如下:
active_master_role writer
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
ip 192.168.119.129
mode master
peer master2
ip 192.168.119.130
mode master
peer master1
ip 192.168.119.131
mode slave
hosts master1,master2
ips 192.168.119.10
mode exclusive
hosts master1,master2, slave
ips 192.168.119.11,192.168.119.22,192.168.119.33
mode balanced
使用for循環(huán)語句分發(fā)給其他三臺主機(jī)
代理文件需要在master1、master2、slave中修改/mmm_agent.conf
this后面添加本地主機(jī)名就可以了
啟動代理進(jìn)程 需要進(jìn)入腳本/etc/init.d/mysql-mmm-agent腳本
把mmm添加為系統(tǒng)服務(wù)并設(shè)置為自啟
能顯示出來ok證明前面做的沒有問題,在三臺代理的主機(jī)都設(shè)置
編輯monitor主機(jī)的/etc/mysql-mmm/mmm_mon.conf
每個參數(shù)的意思
ip 127.0.0.1 設(shè)置只在本機(jī)監(jiān)聽,mmm_mond默認(rèn)監(jiān)聽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 用于測試網(wǎng)絡(luò)可用性 IP 地址列表
auto_set_online 0 設(shè)置自動online的時間,默認(rèn)是60s
check_period 5 檢查周期默認(rèn)為5s
trap_period 10 一個節(jié)點(diǎn)被檢測不成功的時間持續(xù)trap_period秒
timeout 2 檢查超時的時間
restart_after 10000 在完成restart_after次檢查后,重啟checker進(jìn)程,默認(rèn)值:10000
max_backlog 86400 記錄檢查rep_backlog日志的最大次數(shù)
monitor_user www 監(jiān)控db服務(wù)器的用戶
monitor_password 123 監(jiān)控db服務(wù)器的密碼
debug 0 debug 0正常模式,1為debug模式
啟動監(jiān)控進(jìn)程在/etc/init.d/mysql-mmm-monitor文件中添加
添加成系統(tǒng)服務(wù)并設(shè)置為自啟動
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)上查找。