MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。
MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。
优点:
缺点:
MySQL-MMM架构图:
mysql-mmm运行机制:
mysql-mmm安装需求
1.角色:
2.虚拟ip规划:
3.hosts文件配置(全部机器):
4.其他:
1.mysql安装
2.编辑配置文件/etc/my.cnf:
master-db1
master-db2
slave-db1
slave-db2
3.重启以上四台mysql服务
4.在master-db1上创建mmm架构中需要的用户和权限
5.查看二进制日志位置
6.不要关闭这个mysql进程连接,避免锁失效,我们另起一个ssh连接db1服务器,进行数据库备份:
7.回到刚才mysql进程,进行解锁:
8.将database-backup.sql文件复制到其他db节点:
9.master-db,slave-db1,slave-db2三台主机导入sql文件,并刷新权限:
1.在其他三台mysql上将master-db1设为主服务器
2.查看master-db2的master日志位置:
3.在master-db1上操作,将master-db2设置为主:
1.创建Tools user
2.查看mmm版本:
3.在mmm-monitor上安装:
4.在四台mysql服务器上安装:
5.编写配置文件,五台主机必须一致:
6.复制到其他服务器上
7.在所有的MySQL上修改mmm_agent.conf,只需要修改master-db1这里,是哪台就改成哪台,这里只给出master-db1的:
8.配置mmm-monitor上的mmm_mon.conf:
9.启动服务:
在mmm-monitor启动:
在所有mysql服务器上启动
服务器读写采有VIP地址进行读写,出现故障时VIP会漂移到其它节点,由其它节点提供服务。
mysql-mmm故障处理机制:
1.首先查看整个集群的状态,可以看到整个集群状态正常
2.关闭master-db1上的mysql服务,模拟mysql宕机
3.mmm-monitor上查看集群状态
从显示结果可以看出master-db1的状态有ONLINE转换为HARD_OFFLINE,写VIP转移到了master-db2主机上。
4.查看slave-db1和slave-db2主从状态
可以看到写请求的VIP已经转移到master-db2上了,且从节点的主都指向了master-db2
5.启动master-db1的mysql服务
6.再次查看集群状态(大概等待一分钟左右)
7.再次slave-db1和slave-db2主从状态
可以看到主库启动不会接管主,直到现有的主再次宕机。