?
1, mmm简介
MMM(Master-Masterreplication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。
?
MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。
?
如下图所示:

?
?
2,准备好3台mysql服务器
2.1 服务器准备
可以用虚拟机来安装mysql,因为以前做mha实验的时候,已经安装好了mysql,所以这个可以直接在现在已经有的3台mysql上面来部署mmm软件。
| Package name |
Description |
| mysql-mmm-agent |
MySQL-MMM Agent |
| mysql-mmm-monitor |
MySQL-MMM Monitor |
| mysql-mmm-tools |
MySQL-MMM Tools |
?
Mysql主从搭建:http://www.2cto.com/database/201503/386265.html
?
2.2 配置数据库配置
db1(192.168.52.129): vim/etc/my.cnf
server-id=129
log_slave_updates = 1
auto-increment-increment = 2 #每次增长2
auto-increment-offset = 1 #设置自动增长的字段的偏移量,即初始值为1
?
db2(192.168.52.129): vim/etc/my.cnf
server-id=230
log_slave_updates = 1
auto-increment-increment = 2 #每次增长2
auto-increment-offset = 2 #设置自动增长的字段的偏移量,即初始值为1
?
db3(192.168.52.128): vim/etc/my.cnf
server-id=331
log_slave_updates = 1
?
3,安装mmm
3.1 下载mmm
3.2 准备好perl以及lib包环境
yum install -yperl-*
yum install -y libart_lgpl.x86_64
yum install -y mysql-mmm.noarch fail
yum install -y rrdtool.x86_64
yum install -y rrdtool-perl.x86_64
?
可以可以直接运行install_mmm.sh脚本来安装
3.3 开始安装mmm
按照官网标准配置,mmm是需要安装在一台单独服务器上面,但是这里实验为了节省资源,所以就可以将mmm安装部署在一台slave上面,部署在192.168.52.131上面。
?
mv :mmm2:mysql-mmm-2.2.1.tar.gzmysql-mmm-2.2.1.tar.gz
tar -xvf mysql-mmm-2.2.1.tar.gz
cd mysql-mmm-2.2.1
make
make install
?
mmm安装后的拓扑结构如下:
目录 介绍
/usr/lib64/perl5/vendor_perl/ MMM使用的主要perl模块
/usr/lib/mysql-mmm MMM使用的主要脚本
/usr/sbin MMM使用的主要命令的路径
/etc/init.d/ MMM的agent和monitor启动服务的目录
/etc/mysql-mmm MMM配置文件的路径,默认所以的配置文件位于该目录下
/var/log/mysql-mmm 默认的MMM保存日志的位置
?
?
到这里已经完成了MMM的基本需求,接下来需要配置具体的配置文件,其中mmm_common.conf,mmm_agent.conf为agent端的配置文件,mmm_mon.conf为monitor端的配置文件。
?
将mmm_common.conf复制到另外db1、db2上面(因为db3和monitor是一台,所以不用复制了)。
?
4,配置mysql库数据节点的mmm配置
4.1在db3上配置mmm_common.conf
需要在db1、db2、db3上分配配置agent端配置文件,我这里在db3上安装的mmm,所以直接在db3上编辑操作:
vim/etc/mysql-mmm/mmm_common.conf
[root@oraclem1 ~]# cat /etc/mysql-mmm/mmm_common.conf
active_master_role writer
cluster_interface eth0
pid_path /var/run/mmm_agentd.pid
bin_path /usr/lib/mysql-mmm/
replication_user repl
replication_password repl_1234
agent_user mmm_agent
agent_password mmm_agent_1234
ip 192.168.52.129
mode master
peer db2
ip 192.168.52.128
mode master
peer db1
ip 192.168.52.131
mode slave
hosts db1, db2
ips 192.168.52.120
mode exclusive
hosts db1, db2, db3
ips 192.168.52.129, 192.168.52.128, 192.168.52.131
mode balanced
[root@oraclem1 ~]#
?
其中 replication_user 用于检查复制的用户, agent_user 为agent的用户, mode 标明是否为主或者备选主,或者从库。 mode exclusive 主为独占模式,同一时刻只能有一个主,
中hosts表示目前的主库和备选主的真实主机ip或者主机名, ips 为对外提供的虚拟机ip地址,
中hosts代表从库真实的ip和主机名, ips 代表从库的虚拟ip地址。
?
由于db2和db3两台主机也要配置agent配置文件,我们直接把mmm_common.conf从db1拷贝到db2和db3两台主机的/etc/mysql-mmm下。
4.2 将mmm_common.conf复制到db1和db2上面
scp /etc/mysql-mmm/mmm