天天看点

mysql MMM详解

master-master monitor(MMM)

一、MMM简介

MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。
   官网安装步骤:http://mysql-mmm.org/mmm2:guide
   下载地址:http://mysql-mmm.org/downloads      

二、MMM基本构架及实现原理

mysql MMM详解

主要的思想还是主从复制,然后再多设置一个master来备用。MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。

  mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。

  mmm_agentd:运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。

  mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令。

  mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。

  在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户,如果想使用mmm的备份工具则还要添加一个mmm_tools用户。

三、MMM的优缺点

优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。

缺点:Monitor节点是单点,可以结合Keepalived实现高可用。

MMM安装

一、安装准备工作 

服务器:

服务器 IP 作用 备注
DB1 192.168.1.238 master
DB2 192.168.1.239 备用master
DB3 192.168.1.13 slave
monitor 192.168.1.238 slave 测试用所以放在master上
ips:192.168.1.5(写)、192.168.1.10(读)

系统:centos6.5

二、安装Mysql

三、配置复制 

配置DB1与DB2进行主主复制。 

配置DB1(master)与DB3(slave)进行主从复制。 

 四、配置用户 

每个数据库上都需要三个用户:

function description privileges
monitor user used by the mmm monitor to check the health of the MySQL servers REPLICATION CLIENT
agent user used by the mmm agent to change read-only mode, replication master, etc. SUPER, REPLICATION CLIENT, PROCESS
replication user used for replication REPLICATION SLAVE

GRANT REPLICATION CLIENT ON . TO ‘mmm_monitor’@’192.168.1.%’ IDENTIFIED BY ‘monitor_password’; 

GRANT SUPER, REPLICATION CLIENT, PROCESS ON . TO ‘mmm_agent’@’192.168.1.%’ IDENTIFIED BY ‘agent_password’; 

GRANT REPLICATION SLAVE ON . TO 

‘replication’@’192.168.1.%’ IDENTIFIED BY ‘replication_password’;

五、安装MMM 

用yum安装时需要epel源,安装配置方法: 

 1、DB1、DB2、DB3安装mysql-MMM-agent 

yum install -y mysql-mmm-agent 

2、monitor安装mysql-mmm-monitor 

yum -y install mysql-mmm-monitor

六、配置MMM 

1、配置DB1、DB2、DB3、monitor中的 /etc/mysql-mmm/mmm_common.conf

active_master_role          writer


<host default>
    cluster_interface       eth0

    pid_path                /var/run/mmmd_agent.pid
    bin_path                /usr/lib/mysql-mmm/

    replication_user        replication
    replication_password    replication_password

    agent_user              mmm_agent
    agent_password          agent_password
</host>

<host db1>
    ip                      192.168.1.238
    mode                    master
    peer                    db2
</host>

<host db2>
    ip                      192.168.1.239
    mode                    master
    peer                    db1
</host>

<host db3>
    ip                      192.168.1.13
    mode                    slave
</host>

#<host db4>
#    ip                      192.168.1.14
#    mode                    slave
#</host>


<role writer>
    hosts                   db1, db2
    ips                     192.168.1.5
    mode                    exclusive
</role>

<role reader>
    hosts                   db3
    ips                     192.168.1.10
    mode                    balanced
</role>      

2、分别配置DB1、DB2、DB3中的 /etc/mysql-mmm/mmm_agent.conf

DB1:

include mmm_common.conf
this db1      

DB2:

include mmm_common.conf
this db2      

DB3:

include mmm_common.conf
this db3      

3、配置monitor主机中的 /etc/mysql-mmm/mmm_mon.conf文件:

include mmm_common.conf

<monitor>
    ip                      127.0.0.1
    pid_path                /var/run/mmmd_mon.pid
    bin_path                /usr/lib/mysql-mmm/
    status_path             /var/lib/misc/mmmd_mon.status
    ping_ips               192.168.1.238,192.168.1.239,192.168.1.13
</monitor>

<host default>
    monitor_user            mmm_monitor
    monitor_password        monitor_password
</host>

debug 0      

七、启动MMM 

在DB1/DB2/DB3上执行: 

/etc/init.d/mysql-mmm-agent start

在monitor上执行 

/etc/init.d/mysql-mmm-monitor start

查看状态(monitor): 

mmm_control show 

mysql MMM详解

查看检测状态: 

mmm_control checks 

mysql MMM详解

八、测试MMM 

停止238上的mysql并查看是否会切换至239上。

相关文章: 

使用MySQL-MMM时遇到的一些问题​​http://sofar.blog.51cto.com/353572/1603111​​ 

MMM监控端启动流程 ​​http://blog.itpub.net/26250550/viewspace-1094480/​​