1,环境介绍,系统均为CentOS6.5 64位
name | ip | 角色 | 须安装的软件 | DB | |
node2 | 172.16.251.22 | agent | mysql-mmm-agent | mariaDB10 | |
node3 | 172.16.251.23 | agent | mysql-mmm-agent | mariaDB10 | |
node4 | 172.16.251.24 | agent | mysql-mmm-agent | mariaDB10 | |
node5 | 172.16.251.25 | monitor | mysql-mmm-monitor | mysql-client |
2,简单概述mysql-mmm
MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,原理是:在一组复制的服务器启动虚拟ip,由于虚拟IP的存在,某一节点的故障,并不会影响正常的读写操作。(位于同一组的读或写服务器会有相同的虚拟IP对外提供服务)。
3,具体实现
1)主主复制的具体配置实现(node2与node3)
2)主从复制的具体配置实现(node3主与node4从)
详细请查看:http://onlywyn.blog.51cto.com/204565/1395992
4,软件安装
1)在node2,node3,node4上面分别安装 mysql-mmm-agent
yum install -y mysql-mmm-agent
2)node5上安装 mysql-mmm-monitor
yuminstall -y mysql-mmm-monitor
5,配置文件的设置及详解
编辑node2上的/etc/mysql-mmm/mmm_common.conf,具体配置如下描述:
active_master_role writer <host default> cluster_interface eth0 #集群节点间通信依赖的网卡 pid_path /var/run/mysql-mmm/mmm_agentd.pid bin_path /usr/libexec/mysql-mmm/ replication_user admin replication_password admin agent_user admin agent_password admin ##方便实现操作使用的用户名和密码一样 </host> <host node2> #主机名 ip 172.16.251.22 #node2主机ip mode master #此节点的角色 peer node3 #与node3为主-主复制架构 </host> <host node3> #主机名 ip 172.16.251.23 #node3主机ip mode master #此节点的角色 peer node2 #与node2为主-主复制架构 </host> <host node4> #主机名 ip 172.16.251.24 #node4主机ip mode slave #此节点的角色 </host> <role writer> #定义mysql写服务器 hosts node3,node2 #定义mysql写服务器,所包括的主机 ips 172.16.251.35 #对外提供服务的VIP mode exclusive #工作模式 </role> <role reader> #定义mysql写服务器 hosts node4,node3 #定义mysql读服务器,所包括的主机 ips 172.16.251.5,172.16.251.15 #对外提供服务的VIP mode balanced #工作模式 </role>
配置/etc/mysql-mmm/mysql-mmm-agent.conf
配置/etc/mysql-mmm/mysql-mmm-mon.conf文件详解,在节点node5上
6,测试
1)分别在node2,node3,node4启动 agent
service mysql-mmm-agent start
2)在node5上启动monitor,并安装mysql客户端程序(不用安装服务器端)
service mysql-mmm-monitor start
yum install -y mysql
查看monitor连接状态
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: node3(172.16.251.23) master/ONLINE. Roles: reader(172.16.251.15), writer(172.16.251.35) node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.5)
可以看三台mysql服务器已经在线,node2、node3为主主复制,node3、node4为主从复制,对外提供服务的虚拟读IP为172.16.251.15、172.16.251.5,虚拟写IP为172.16.251.35
测试:停止node3上的mysql服务器
再查看三台服务器的状态,如下
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: writer(172.16.251.35) node3(172.16.251.23) master/HARD_OFFLINE. Roles: node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.15), reader(172.16.251.5)
可以发现,读服务器已经自动切换至node2上面。再次启动node3上的mysql服务器,如下:
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: writer(172.16.251.35) node3(172.16.251.23) master/AWAITING_RECOVERY. Roles: node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.15), reader(172.16.251.5)
此时node3处理等待发现(恢复)状态,在监控端使用命令:mmm_control set_online node3
[root@node5 mysql-mmm]# mmm_control show node2(172.16.251.22) master/ONLINE. Roles: node3(172.16.251.23) master/ONLINE. Roles: reader(172.16.251.15), writer(172.16.251.35) node4(172.16.251.24) slave/ONLINE. Roles: reader(172.16.251.5)
后记:此次实验过程中,对于虚拟出来的读IP地址,在监控端是可以登陆进行正常的查讯操作(172.16.251.5、172.16.251.25),但是对于虚拟出来的写IP(172.16.251.35),对外提供服务
须依赖真实的IP地址,显然是不妥的地方,下次再续(^_^!!)