1 MMM概述
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 [email protected]'%' identified by "123456";
数据库节点控制数据库用户授权
mysql> grant replication client,process,super on *.* to [email protected]'%'
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服务
[[email protected] ~]# /etc/init.d/mysql-mmm-agent start (stop,status)
[[email protected] ~]# netstat -anptu |grep 9989
(2)启动管理节点主机mmm_monitor服务
[[email protected] ~]# /etc/init.d/mysql-mmm-monitor start
[[email protected] ~]# netstat -anptu |grep 9988
(3)在管理节点主机上,查看监控信息
[[email protected] ~]# mmm_control show
[[email protected] ~]# 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。
原文地址:http://blog.51cto.com/13452945/2065676