MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。
MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。
MMM项目来自 Google:http://code.google.com/p/mysql-master-master
官方网站为:http://mysql-mmm.org
Mmm主要功能由下面三个脚本提供
l mmm_mond 负责所有的监控工作的监控守护进程,决定节点的移除等等
l mmm_agentd 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点
l mmm_control 通过命令行管理mmm_mond进程
在两个节点的master-master环境下,MMM使用5个IP。每个单独的节点使用一个固定IP,这个固定IP永远不会变化。
2个reader IPs(read-only)和一个writer IP(updates),后面三个IP(2个reader IP和一个Writer IP)在两个节点之间迁移,如何迁移取决于节点的可用性。
正常情况下(没有复制失败,没有复制延迟等)活动的master有两个虚拟ip(reader和writer),备用的master有一个虚拟ip(reader),如果活动的master失败了,那么所有的reader和writer虚拟IP都会被分配给备用的master。
具体的配置信息如下所示:
角色 ip地址 主机名字 server-id
monitoring 10.0.0.6 monitor -
master1 10.0.0.4 db1 1
master2 10.0.0.5 db2 2
slave1 10.0.0.7 db3 3
业务中的服务ip信息如下所示:
ip地址 角色 描述
10.0.0.80 write 应用程序连接该ip对主库进行写请求
10.0.0.90 read 应用程序连接该ip进行读请求
10.0.0.100 read 应用程序连接该ip进行读请求
部署架构如下图:
MySQL-MMM优缺点
优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。
缺点:Monitor节点是单点,可以结合Keepalived实现高可用。
具体的部署步骤如下:
(1)主机配置
在Azure中创建一个虚拟网络,然后在库中创建虚拟机,选择基于CENTOS Openlogic 6.5
PS:由于MMM的监控机制需要检查PING,请确保所有虚拟机在一个VNET下。
同时完成四台虚拟机的创建,分别是master1、master2、slave、monitor,如下图:
使用那个Xshell连接到VM
首先获取root权限并修改root密码,如下操作
Sudo su -
输入密码
Passwd root
在每一台服务器上用yum命令安装MYSQL服务
# yum install mysql-server
安装完成后重启MYSQL服务
# service mysqld restart
连接到mysql,修改mysql root密码,如下操作:
# mysql -uroot
use mysql
update user set password=password('p@ssw0rd') where user='root';
flush privileges;
select user,host,password from mysql.user