1,环境介绍,系统均为CentOS6.5 64位

nameip角色须安装的软件DB
node2172.16.251.22agentmysql-mmm-agentmariaDB10
node3172.16.251.23agentmysql-mmm-agentmariaDB10
node4172.16.251.24agentmysql-mmm-agentmariaDB10
node5172.16.251.25monitormysql-mmm-monitormysql-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

wKioL1NZH0KRdreTAAE9bf9Fso4912.jpg

   配置/etc/mysql-mmm/mysql-mmm-mon.conf文件详解,在节点node5上

wKioL1NZIMbTjcuSAAJjJ0zrbDc077.jpg

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地址,显然是不妥的地方,下次再续(^_^!!)