共計(jì) 4239 個(gè)字符,預(yù)計(jì)需要花費(fèi) 11 分鐘才能閱讀完成。
這期內(nèi)容當(dāng)中丸趣 TV 小編將會給大家?guī)碛嘘P(guān) mysql 高可用中 MMM 高可用 mysql 方案是怎么樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
MMM 高可用 mysql 方案
方案簡介
MMM 即 Master-Master Replication Manager for MySQL(mysql 主主復(fù)制管理器)關(guān)于 mysql 主主復(fù)制配置的監(jiān)控、故障轉(zhuǎn)移和管理的一套可伸縮的腳本套件(在任何時(shí)候只有一個(gè)節(jié)點(diǎn)可以被寫入),這個(gè)套件也能對居于標(biāo)準(zhǔn)的主從配置的任意數(shù)量的從服務(wù)器進(jìn)行讀負(fù)載均衡,所以你可以用它來在一組居于復(fù)制的服務(wù)器啟動虛擬 ip,除此之外,它還有實(shí)現(xiàn)數(shù)據(jù)備份、節(jié)點(diǎn)之間重新同步功能的腳本。MySQL 本身沒有提供 replication failover 的解決方案,通過 MMM 方案能實(shí)現(xiàn)服務(wù)器的故障轉(zhuǎn)移,從而實(shí)現(xiàn) mysql 的高可用。MMM 不僅能提供浮動 IP 的功能,更可貴的是如果當(dāng)前的主服務(wù)器掛掉后,會將你后端的從服務(wù)器自動轉(zhuǎn)向新的主服務(wù)器進(jìn)行同步復(fù)制,不用手工更改同步配置。這個(gè)方案是目前比較成熟的解決方案。
方案優(yōu)缺點(diǎn)
優(yōu)點(diǎn):安全性、穩(wěn)定性高,可擴(kuò)展性好,高可用,當(dāng)主服務(wù)器掛掉以后,另一個(gè)主立即接管,其他的從服務(wù)器能自動切換,不用人工干預(yù)。
缺點(diǎn):至少三個(gè)節(jié)點(diǎn),對主機(jī)的數(shù)量有要求,需要實(shí)現(xiàn)讀寫分離,對程序來說是個(gè)挑戰(zhàn)。
方案架構(gòu)圖
適用場景
MMM 的適用場景為數(shù)據(jù)庫訪問量大,業(yè)務(wù)增長快,并且能實(shí)現(xiàn)讀寫分離的場景。
方案實(shí)戰(zhàn)
實(shí)戰(zhàn)環(huán)境介紹
實(shí)戰(zhàn)環(huán)境服務(wù)器列表:
ip 地址
Serverid
Mysql
Monitor
10.1.1.111
Centos 5.5 64bit
Master1
10.1.1.113
Centos 5.5 64bit
5.1.63
Master2
10.1.1.75
Centos 5.5 64bit
5.1.63
Slave1
10.1.1.108
Centos 5.5 64bit
5.1.63
實(shí)戰(zhàn)環(huán)境虛擬 IP 列表:
Role
description
10.1.1.176
Read
應(yīng)用配置的讀取 IP,也可以在前端加 lvs 等,做負(fù)載均衡。三臺數(shù)據(jù)庫每臺一個(gè)浮動 VIP
10.1.1.177
Read
10.1.1.178
Read
10.1.1.179
Write
應(yīng)用配置的寫入的 VIP,單點(diǎn)寫入。
MMM 的安裝
在安裝 mmm 之前要安裝 epel 包,因?yàn)?Centos 的默認(rèn)源中沒有 mmm 的安裝包,Epel 是企業(yè)版 Linux 附加軟件包 (Extra Packages for Enterprise Linux) 的縮寫,是一個(gè)由特別興趣小組創(chuàng)建、維護(hù)并管理的,針對紅帽企業(yè)版 Linux(RHEL)及其衍生發(fā)行版 (比如 CentOS、Scientific Linux) 的一個(gè)高質(zhì)量附加軟件包項(xiàng)目。
安裝 epel:
wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
rpm -Uvh epel-release-5-3.noarch.rpm
安裝 monitor 的安裝:
yum -y install mysql-mmm*
各個(gè) DB 上只需要安裝 mysql-mmm-agent
yum -y install mysql-mmm-agent
MMM 的配置
配置之前的準(zhǔn)備
前提是要配置好 master1 和 master2 的主主同步,master1 和 slave1 的主從同步,限于篇幅這里我就不做介紹了。
在配置 mmm 之前首先要在 mysql 中創(chuàng)建除復(fù)制帳號之外的另外兩個(gè)帳號,首先來介紹 monitor user 帳號,這個(gè)帳號是 monitor 服務(wù)器用來對 mysql 服務(wù)器做健康檢查的,其次就是 agent user,這個(gè)帳號是 mmm agent(mmm 代理)用來變成只讀模式和同步 master 等,下面是創(chuàng)建這兩個(gè)帳號的語句:
GRANT REPLICATION CLIENT ON *.* TO mmm_monitor @ 10.1.1.% IDENTIFIED BY monitor_password
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO mmm_agent @ 10.1.1.% IDENTIFIED BY agent_password
flush privileges;
這兩個(gè)語句在每個(gè) mysql 中都要執(zhí)行一下。
Monitor 服務(wù)器的配置
的配置文件在 /etc/mysql-mmm 目錄下,monitor 需要配置的文件有 mmm_common.conf、mmm_mon.conf 兩個(gè)文件。mmm_common.conf 文件在 mmm 的各個(gè)節(jié)點(diǎn)都是一樣的,因此配置好以后 copy 到各個(gè) DB 節(jié)點(diǎn)即可。
我 mmm_common.conf 的配置如下:
vim /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 replication
replication_password 123456
agent_user mmm_agent
agent_password agent_password
/host
host db1
ip 10.1.1.113 #這個(gè) IP 尤其注意是 db1 的 IP
mode master
peer db2
/host
host db2
ip 10.1.1.75 #這個(gè) IP 尤其注意是 db2 的 IP
mode master
peer db1
/host
host db3
ip 10.1.1.108
mode slave
/host
role writer
hosts db1, db2
ips 10.1.1.179
mode exclusive
/role
role reader
hosts db1, db2, db3
ips 10.1.1.176, 10.1.1.177, 10.1.1.178
mode balanced
/role
我的 mmm_mon.conf 配置如下:
vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf
monitor
ip 127.0.0.1
pid_path /var/run/mysql-mmm/mmm_mond.pid
bin_path /usr/libexec/mysql-mmm
status_path /var/lib/mysql-mmm/mmm_mond.status
ping_ips 10.1.1.1, 10.1.1.113, 10.1.1.75, 10.1.1.108
# ping_ips 監(jiān)控了網(wǎng)關(guān) IP 和其他的 DB 節(jié)點(diǎn) IP
auto_set_online 60
/monitor
host default
monitor_user mmm_monitor
monitor_password monitor_password
/host
debug 0
各個(gè) DB 服務(wù)器的配置
各個(gè) DB 服務(wù)器要配置的東西比較不多,主要有 mmm_common.conf、mmm_agent.conf 和 /etc/default/mysql-mmm-agent 文件。
db1 的配置
文件的配置和前面 monitor 的一樣,直接 copy 過來即可使用
的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db1
的配置:
vim /etc/default/mysql-mmm-agent
db2 的配置
文件的配置和前面 monitor 的一樣,直接 copy 過來即可使用
的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db2
的配置:
vim /etc/default/mysql-mmm-agent
db3 的配置
文件的配置和前面 monitor 的一樣,直接 copy 過來即可使用
的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db3
的配置:
vim /etc/default/mysql-mmm-agent
MMM 的管理
MMM 的啟動和停止
MMM 的啟動
啟動 mmm agent
/etc/init.d/mysql-mmm-agent start
將 agent 的啟動命令寫入到三個(gè) DB 的 rc.local 文件中
啟動 mmm monitor
/etc/init.d/mysql-mmm-monitor start
將 monitor 的啟動命令寫入到 monitor 服務(wù)器的 rc.local 文件中
MMM 的停止
停止 mmm agent
/etc/init.d/mysql-mmm-agent stop
停止 mmm monitor
/etc/init.d/mysql-mmm-monitor stop
MMM 的基本管理
查看集群的狀態(tài)
mmm_control show
將 db1 設(shè)置成 online 狀態(tài)
mmm_control set_online db1
更多管理命令請使用 mmm_control help 查看,或者參考:
http://blog.chinaunix.net/uid-20639775-id-154606.html
MMM 架構(gòu)的測試
環(huán)境搭建好以后,就需要進(jìn)行周密的測試,看是否實(shí)現(xiàn)了預(yù)期的功能:
停掉 master1 后在 monitor 端使用 mmm_control show 看是否能切換。看看 slave1 是否能正確切換同步。
啟動 master1 后在 monitor 端使用 mmm_control show 看是否能切換。
停掉 master2 后看看能否正確切換。
MMM 架構(gòu)的監(jiān)控
為實(shí)現(xiàn)高可用,系統(tǒng)的各個(gè)層面都需要全面的監(jiān)控起來,比如 agent 進(jìn)程的監(jiān)控,monitor 進(jìn)程的監(jiān)控,mysql 可用性的監(jiān)控,數(shù)據(jù)庫同步的監(jiān)控等,推薦使用 nagios 對以上資源進(jìn)行監(jiān)控,第一時(shí)間發(fā)現(xiàn)問題,第一時(shí)間處理。
上述就是丸趣 TV 小編為大家分享的 mysql 高可用中 MMM 高可用 mysql 方案是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。