一、
MMM介紹
MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)複製,可以說是mysql主主複製管理器。雖然叫做雙主複製,但是業務上同一時刻只允許對一個主進行寫入,另一台備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。關於mysql主主複製配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候只有一個節點可以被寫入),這個套件也能對居於標準的主從配置的任意數量的從服務器進行讀負載均衡,所以你可以用它來在一組居於複製的服務器啟動虛擬ip,除此之外,它還有實現數據備份、節點之間重新同步功能的腳本。
MMM提供了自動和手動兩種方式移除一組服務器中複製延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由於MMM無法完全的保證數據一致性,所以MMM適用於對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。對於那些對數據的一致性要求很高的業務,非常不建議採用MMM這種高可用架構。
二、安裝過程:
1)配置/etc/hosts(所有機器都要操作)
[root@mmm-monit ~]# cat /etc/hosts
…….
192.168.179.53 mmm-monit
192.168.179.51 db-master1
192.168.179.52 db-master2
192.168.179.55 db-slave
2)首先在3台主機上安裝mysql,部署複製環境
其中:192.168.179.51和192.168.179.52互為主從,192.168.179.55為192.168.179.51的從
———1192.168.179.51的my.cnf添加配置———
server-id = 1
log-bin = mysql-bin
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 1
———192.168.179.52的my.cnf添加配置———
server-id = 2
log-bin = mysql-bin
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 2
———192.168.179.53的my.cnf添加配置———
server-id = 3
log-bin = mysql-bin
log_slave_updates = 1
3)安裝MMM(所有機器上都要執行)
…….先安裝MMM所需要的Perl模塊…….
[root@db-master1 ~]# vim install.sh //在所有機器上執行下面的安裝腳本
#!/bin/bash
wget http://xrl.us/cpanm –no-check-certificate
mv cpanm /usr/bin
chmod 755 /usr/bin/cpanm
cat > /root/list << EOF
install Algorithm::Diff
install Class::Singleton
install DBI
install DBD::mysql
install File::Basename
install File::stat
install File::Temp
install Log::Dispatch
install Log::Log4perl
install Mail::Send
install Net::ARP
install Net::Ping
install Proc::Daemon
install Thread::Queue
install Time::HiRes
EOF
for package in `cat /root/list`
do
cpanm $package
done
[root@db-master1 ~]# chmod 755 install.sh
[root@db-master1 ~]# ./install.sh
………下載mysql-mmm軟件,在所有服務器上安裝…………
[root@db-master1 ~]# wget http://mysql-mmm.org/_media/:mmm2:mysql-mmm-2.2.1.tar.gz
[root@db-master1 ~]# mv :mmm2:mysql-mmm-2.2.1.tar.gz mysql-mmm-2.2.1.tar.gz
[root@db-master1 ~]# tar -zvxf mysql-mmm-2.2.1.tar.gz
[root@db-master1 ~]# cd mysql-mmm-2.2.1
[root@db-master1 mysql-mmm-2.2.1]# make install
4)配置agent端的配置文件,需要在db-master1 ,db-master2,db-slave上分別配置(配置內容一樣)
先在db-master1主機上配置agent的mmm_common.conf文件(這個在所有機器上都要配置,包括monitor機器)
[root@db-master1 ~]# cd /etc/mysql-mmm/
[root@db-master1 mysql-mmm]# cp mmm_common.conf mmm_common.conf.bak
[root@db-master1 mysql-mmm]# vim mmm_common.conf
active_master_role writer
<host default>
cluster_interface eth0
pid_path /var/run/mmm_agentd.pid
bin_path /usr/lib/mysql-mmm/
replication_user slave //注意這個賬號和下面一行的密碼是在前面部署主主/主從複製時創建的複製賬號和密碼
replication_password slave@123
agent_user mmm_agent
agent_password mmm_agent
</host>
<host db-master1>
ip 192.168.179.51
mode master
peer db-master2
</host>
<host db-master2>
ip 192.168.179.52
mode master
peer db-master1
</host>
<host db-slave>
ip 192.168.179.55
mode slave
</host>
<role writer>
hosts db-master1, db-master2
ips 192.168.179.58
mode exclusive
</role>
<role reader>
hosts db-master2, db-slave
ips 192.168.179.59, 192.168.179.60
mode balanced
</role>
分別在db-master1,db-master2,db-slave三台主機的/etc/mysql-mmm配置mmm_agent.conf文件,分別用不同的字符標識。注意這個文件的this db1這行內容要修改
為各自的主機名。比如本環境中,db-master1要配置this db-master1,db-master2要配置為this db-master2,而db-slave要配置為this db-slave。在db-master1(192.168.179.51)上:
[root@db-master1 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db-master1在db-master2(192.168.179.52)上:
[root@db-master2 ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db-master2在db-slave(192.168.179.55)上:
[root@db-slave ~]# vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db-slave
接着在mmm-monit(192.168.179.53)配置monitor的配置文件:
[root@mmm-monit ~]# cp /etc/mysql-mmm/mmm_mon.conf /etc/mysql-mmm/mmm_mon.conf.bak
[root@mmm-monit ~]# vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf<monitor>
ip 192.168.179.53
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 1192.168.179.51,192.168.179.52,192.168.179.55
auto_set_online 10 //發現節點丟失,則過10秒進行切換
</monitor><host default>
monitor_user mmm_monitor
monitor_password mmm_monitor
</host>debug 0
5)創建監控用戶,這裡需要創建3個監控用戶
具體描述:
用戶名 描述 權限
monitor user MMM的monitor端監控所有的mysql數據庫的狀態用戶 REPLICATION CLIENT
agent user 主要是MMM客戶端用於改變的master的read_only狀態用戶 SUPER,REPLICATION CLIENT,PROCESS
repl 用於複製的用戶 REPLICATION SLAVE
在3台服務器(db-master1,db-master2,db-slave)進行授權,因為之前部署的主主複製,以及主從複製已經是ok的,所以這裡在其中一台服務器執行就ok,執行後
權限會自動同步到其它兩台機器上。用於複製的賬號之前已經有,所以這裡就授權兩個賬號。
在db-master1上進行授權操作:
mysql> GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent’@’182.48.115.%’ IDENTIFIED BY ‘mmm_agent’;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION CLIENT ON *.* TO ‘mmm_monitor’@’182.48.115.%’ IDENTIFIED BY ‘mmm_monitor’;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
以下文章點擊率最高
Loading…