MySQL高可用集群
1.1 關於mysql-mmm
MySQL主主復制管理器
MySQL主主復制配置的監控,故障轉移和管理的一套腳本套件;
能對居於標準的主從配置的任意數量的從服務器進行讀負載均衡和實現數據備份;
通過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。
1.2 高可用集群介紹:
主備模式 當主不能提供服務的時候備用主機接替它提供服務,這個過程對於客戶端是透明的。
1.3 前提環境:主從從結構
4臺數據庫服務器,2臺互為主主,另2臺為主中的一臺的從。
2 Mysql-MMM構架
2.1 服務器角色
管理節點:mmm-monitor(服務進程)
#負責所有的監控工作的監控守護進程,決定故障節點的移除或恢復;
數據庫節點:mmm-agent(服務進程)
#運行在Mysql服務器上的代理守護進程,提供簡單遠程服務集,提供給監控節點;
2.2 核心軟件包及作用
Net-ARP:分配虛擬Ip地址
mysql-mmm 構架的核心進程
2.3 配置
(1)tar -xf mysql-mmm-2.2.1.tar.gz(所有主機上安裝)
查看說明文件,執行make install
配置文件路徑:/etc/mysql-mmm
(2)修改數據節點主機mmm_agentd服務的配置文件
vim /etc/mysql-mmm/mmm_agent.conf #指定服務器在集群中的名稱,不能重復
this 主機名 #配置聲明自己的主機名
(3)修改管理節點主機mmm_monitor服務的配置文件
vim /etc/mysql-mmm/mmm_mon.conf
include mmm_common.conf #加載公共配置文件
<monitor>
ip 192.168.4.55 #管理節點主機(即監控主機的IP地址)
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.4.51, 192.168.4.52, 192.168.4.53, 192.168.4.54
#設置被監控的數據庫
</monitor>
<host default>
monitor_user monitor #監控數據庫的mysql用戶
monitor_password 123456
</host>
debug 0 #啟動服務不顯示啟動信息(1顯示)
(4)修改公共配置文件
active_master_role writer
<host default>
cluster_interface eth0
pid_path /var/run/mmm_agentd.pid
bin_path /usr/lib/mysql-mmm/
replication_user ser51
#設置主從同步的用戶,要和主數據庫給本機授權的用戶一致,
#可在/var/lib/mysql/master.info 中查看
replication_password 123456
agent_user agent #mmm_agent控制用戶
agent_password 123456
</host>
<host master51> #設置第一個主服務器
ip 192.168.4.51 #主服務器IP
mode master
peer master52 #指定另一臺主服務器
</host>
<host master5> #設置第二個主服務器
ip 192.168.4.52
mode master
peer master51
</host>
<host slave53>
ip 192.168.4.53
mode slave
</host>
<host slave54> #設置第一個從服務器
ip 192.168.4.54
mode slave
</host>
<role writer> #設置寫服務器工作模式
hosts master51, imaster52 #寫的主服務器
ips 192.168.4.100 #設置VIP地址
mode exclusive #只允許一個使用
</role>
<role reader>
hosts slave53, slave54
ips 192.168.4.101, 192.168.4.102
mode balanced #均衡模式
</role>
(5)根據配置文件設置,在數據節點主機添加對應的授權用戶
管理節點監控數據庫用戶授權
mysql> grant replication client on *.* to monitor@'%' identified by "123456";
數據庫節點控制數據庫用戶授權
mysql> grant replication client,process,super on *.* to agent@'%'
identified by "123456";
2.4 安裝依賴關系
yum -y install perl.*
yum -y install gcc gcc-c++
tar -xf Algorithm-Diff-1.1902.tar.gz
cd Algorithm-Diff-1.1902
perl Makefile.PL
make
make install
rpm -ivh perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm
tar -zxf Proc-Daemon-0.03.tar.gz
cd Proc-Daemon-0.03
perl Makefile.PL
make
make install
gunzip Net-ARP-1.0.8.tgz
tar -xf Net-ARP-1.0.8.tar
cd Net-ARP-1.0.8/
perl Makefile.PL
make
make install
2.5啟動服務
(1)啟動數據節點主機mmm_agentd服務
[root@ser51 ~]# /etc/init.d/mysql-mmm-agent start (stop,status)
[root@ser55 ~]# netstat -anptu |grep 9989
(2)啟動管理節點主機mmm_monitor服務
[root@ser55 ~]# /etc/init.d/mysql-mmm-monitor start
[root@ser55 ~]# netstat -anptu |grep 9988
(3)在管理節點主機上,查看監控信息
[root@ser55 ~]# mmm_control show
[root@ser55 ~]# mmm_control set_online master51(agent配置文件裏設置的名稱;set_offine:不在線狀態)
(1)數據節點主機查看 VIP 地址?
ip addr show | grep 192.168.4.
2.6 測試
mysql> grant all on *.* to 用戶名@'%' identified by "123456";
#授權客戶端連接數據庫用戶
mysql -h192.168.4.100 -u用戶名 -p123456
無論關掉master51的還是master52的數據庫服務,此時VIP會被其中一個占用,用戶連接同樣的VIP一樣能夠連接數據庫,且在數據庫進行操作後,掛掉主的數據庫服務器重啟啟用後,數據會自動同步。此時VIP不會被搶占。
停掉agent服務,當其中一個主數據庫停掉,監控不能夠自動切換VIP。
MySQL高可用集群