您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關mysql高可用中MMM高可用mysql方案是怎么樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
MMM高可用mysql方案
方案簡介
MMM即Master-Master Replication Manager for MySQL(mysql主主復制管理器)關于mysql主主復制配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候只有一個節點可以被寫入),這個套件也能對居于標準的主從配置的任意數量的從服務器進行讀負載均衡,所以你可以用它來在一組居于復制的服務器啟動虛擬ip,除此之外,它還有實現數據備份、節點之間重新同步功能的腳本。MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。MMM不僅能提供浮動IP的功能,更可貴的是如果當前的主服務器掛掉后,會將你后端的從服務器自動轉向新的主服務器進行同步復制,不用手工更改同步配置。這個方案是目前比較成熟的解決方案。
方案優缺點
優點:安全性、穩定性高,可擴展性好,高可用,當主服務器掛掉以后,另一個主立即接管,其他的從服務器能自動切換,不用人工干預。
缺點:至少三個節點,對主機的數量有要求,需要實現讀寫分離,對程序來說是個挑戰。
方案架構圖
適用場景
MMM的適用場景為數據庫訪問量大,業務增長快,并且能實現讀寫分離的場景。
方案實戰
實戰環境介紹
實戰環境服務器列表:
服務器 | 主機名 | ip地址 | Serverid | 系統 | Mysql |
Monitor | Mon | 10.1.1.111 | -- | Centos 5.5 64bit | -- |
Master1 | db1 | 10.1.1.113 | 1 | Centos 5.5 64bit | 5.1.63 |
Master2 | db2 | 10.1.1.75 | 2 | Centos 5.5 64bit | 5.1.63 |
Slave1 | db3 | 10.1.1.108 | 3 | Centos 5.5 64bit | 5.1.63 |
實戰環境虛擬IP列表:
VIP | Role | description |
10.1.1.176 | Read | 應用配置的讀取IP,也可以在前端加lvs等,做負載均衡 。三臺數據庫每臺一個浮動VIP |
10.1.1.177 | Read | |
10.1.1.178 | Read | |
10.1.1.179 | Write | 應用配置的寫入的VIP,單點寫入。 |
MMM的安裝
在安裝mmm之前要安裝epel包,因為Centos的默認源中沒有mmm的安裝包,Epel是企業版Linux附加軟件包(Extra Packages for Enterprise Linux)的縮寫,是一個由特別興趣小組創建、維護并管理的,針對紅帽企業版Linux(RHEL)及其衍生發行版(比如CentOS、Scientific Linux)的一個高質量附加軟件包項目。
安裝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*
各個DB上只需要安裝mysql-mmm-agent
yum -y install mysql-mmm-agent
MMM的配置
配置之前的準備
前提是要配置好master1和master2的主主同步,master1和slave1的主從同步,限于篇幅這里我就不做介紹了。
在配置mmm之前首先要在mysql中創建除復制帳號之外的另外兩個帳號,首先來介紹monitor user帳號,這個帳號是monitor服務器用來對mysql服務器做健康檢查的,其次就是agent user,這個帳號是mmm agent(mmm代理)用來變成只讀模式和同步master等,下面是創建這兩個帳號的語句:
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;
這兩個語句在每個mysql中都要執行一下。
Monitor服務器的配置
的配置文件在/etc/mysql-mmm目錄下,monitor需要配置的文件有mmm_common.conf、mmm_mon.conf兩個文件。mmm_common.conf文件在mmm的各個節點都是一樣的,因此配置好以后copy到各個DB節點即可。
我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 #這個IP尤其注意是db1的IP
mode master
peer db2
</host>
<host db2>
ip 10.1.1.75 #這個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 監控了網關IP和其他的DB節點IP
auto_set_online 60
</monitor>
<host default>
monitor_user mmm_monitor
monitor_password monitor_password
</host>
debug 0
各個DB服務器的配置
各個DB服務器要配置的東西比較不多,主要有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的啟動命令寫入到三個DB的rc.local文件中
啟動mmm monitor
/etc/init.d/mysql-mmm-monitor start
將monitor的啟動命令寫入到monitor服務器的rc.local文件中
MMM的停止
停止mmm agent
/etc/init.d/mysql-mmm-agent stop
停止mmm monitor
/etc/init.d/mysql-mmm-monitor stop
MMM的基本管理
查看集群的狀態
mmm_control show
將db1設置成online狀態
mmm_control set_online db1
更多管理命令請使用mmm_control help查看,或者參考:
http://blog.chinaunix.net/uid-20639775-id-154606.html
MMM架構的測試
環境搭建好以后,就需要進行周密的測試,看是否實現了預期的功能:
停掉master1后在monitor端使用mmm_control show看是否能切換。看看slave1是否能正確切換同步。
啟動master1后在monitor端使用mmm_control show看是否能切換。
停掉master2后看看能否正確切換。
MMM架構的監控
為實現高可用,系統的各個層面都需要全面的監控起來,比如agent進程的監控,monitor進程的監控,mysql可用性的監控,數據庫同步的監控等,推薦使用nagios對以上資源進行監控,第一時間發現問題,第一時間處理。
上述就是小編為大家分享的mysql高可用中MMM高可用mysql方案是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。