MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。
MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。
优点:
1 稳定和成熟的开源产品,经过了时间的考验 核心技术是mysql自己的技术,只是使用脚本程序来控制,所以在原理上比较容易理解,而且管理能够更智能化。 2 安装简单,配置简单,使用简单 3 功能强大 (HA,failover,tools套件,cluster模式可以一个monitor管理多个mmm组)
缺点:
1 由于架构里只有一个写入点,所以扩展性是有限的,但是对一般中型企业够用了。 解决方案:对于大应用可以采取垂直拆分到多个mmm架构的方式,使用mmm cluster来管理。 2 对于读写分离和读负载均衡还是要程序来开发或者使用其他工具完成。
二、架构及配置环境MySQL-MMM架构图:
mysql-mmm运行机制:
mysql-mmm安装需求
Server n+1:
N台安装mysql的机器和1台安装mmm monitor的机器。
2*(n+1)Ips:
每个主机一个固定ip、一个虚拟IP(reader role),全局一个writer role IP
Monitor User:
一个可以在mmm monitor机器上使用的并且拥有REPLICATION,CLIENT权限的mysql用户
Agent User:
一个可以在mmm agent机器上使用的并且拥有super,replication,client,process权限的mysql用户
Replication user:
一个slaves主机上可以使用的并且有用replication slave权限的用户
Tools user:
一个mmm tools主机可以使用的,并且有用super,replication client,reload权限的mysql用户
1.角色:
2.虚拟ip规划:
3.hosts文件配置(全部机器):
192.168.1.11 master-db1 192.168.1.12 master-db2 192.168.1.13 slave-db1 192.168.1.14 slave-db2 192.168.1.15 mmm-monitor
4.其他:
1 关闭iptables 2 同步时间 3 配置yum和epel源
三、安装MySQL并配置1.mysql安装
2.编辑配置文件/etc/my.cnf:
master-db1
[mysqld]
server-id = 1
datadir = /Data/apps/mysql-5.6.36/data
log-bin = /Data/apps/mysql-5.6.36/data/mysql-bin
binlog_format = ROW
relay_log = /Data/apps/mysql-5.6.36/data/relay-log
auto-increment-increment = 2
auto-increment-offset = 1
sync_binlog = 1
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
max_binlog_size = 100M
log_slave_updates = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
master-db2