zoukankan      html  css  js  c++  java
  • mysql高可用探究(六)MMM高可用mysql方案

    1    MMM高可用mysql方案

    1.1  方案简介

    MMMMaster-Master Replication Manager for MySQLmysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案。

    1.2  方案优缺点

    优点:安全性、稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。

    缺点:至少三个节点,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。

    1.3  方案架构图

    1.4  适用场景

    MMM的适用场景为数据库访问量大,业务增长快,并且能实现读写分离的场景。

    1.5  方案实战

    1.5.1 实战环境介绍

    实战环境服务器列表:

    服务器

    主机名

    ip地址

    Serverid

    系统

    Mysql

    Monitor

    Mon

    10.1.1.111

    --

    Centos 5.5 64bit

    --

    Master1

    db1

    10.1.1.113

    1

    Centos 5.5 64bit

    5.1.63

    Master2

    db2

    10.1.1.75

    2

    Centos 5.5 64bit

    5.1.63

    Slave1

    db3

    10.1.1.108

    3

    Centos 5.5 64bit

    5.1.63

    实战环境虚拟IP列表:

    VIP

    Role

    description

    10.1.1.176

    Read

    应用配置的读取IP,也可以在前端加lvs等,做负载均衡 。三台数据库每台一个浮动VIP

    10.1.1.177

    Read

    10.1.1.178

    Read

    10.1.1.179

    Write

    应用配置的写入的VIP,单点写入。

     

    1.5.2 MMM的安装

    在安装mmm之前要安装epel包,因为Centos的默认源中没有mmm的安装包,Epel是企业版Linux附加软件包(Extra Packages for Enterprise Linux)的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(比如CentOSScientific Linux)的一个高质量附加软件包项目。

    安装epel

    安装monitor的安装:

    yum -y install mysql-mmm*

    各个DB上只需要安装mysql-mmm-agent

    yum -y install mysql-mmm-agent

    1.5.3 MMM的配置

    1.5.3.1   配置之前的准备

    前提是要配置好master1master2的主主同步,master1slave1的主从同步,限于篇幅这里我就不做介绍了。

    在配置mmm之前首先要在mysql中创建除复制帐号之外的另外两个帐号,首先来介绍monitor user帐号,这个帐号是monitor服务器用来对mysql服务器做健康检查的,其次就是agent user,这个帐号是mmm agent(mmm代理)用来变成只读模式和同步master等,下面是创建这两个帐号的语句:

    GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'10.1.1.%' IDENTIFIED BY 'monitor_password';

    GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'10.1.1.%'   IDENTIFIED BY 'agent_password';

    flush privileges;

    这两个语句在每个mysql中都要执行一下。

    1.5.3.2   Monitor服务器的配置

    MMM的配置文件在/etc/mysql-mmm目录下,monitor需要配置的文件有mmm_common.confmmm_mon.conf两个文件。mmm_common.conf文件在mmm的各个节点都是一样的,因此配置好以后copy到各个DB节点即可。

    mmm_common.conf的配置如下:

    vim /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        replication

        replication_password    123456

        agent_user              mmm_agent

        agent_password          agent_password

    </host>

     

    <host db1>

        ip      10.1.1.113    #这个IP尤其注意是db1IP

        mode    master

        peer    db2

    </host>

     

    <host db2>

        ip      10.1.1.75    #这个IP尤其注意是db2IP

        mode    master

        peer    db1

    </host>

     

    <host db3>

        ip      10.1.1.108

        mode    slave

    </host>

     

    <role writer>

        hosts   db1, db2

        ips     10.1.1.179

        mode    exclusive

    </role>

     

    <role reader>

        hosts   db1, db2, db3

        ips     10.1.1.176, 10.1.1.177, 10.1.1.178

        mode    balanced

    </role>

    我的mmm_mon.conf配置如下:

    vim /etc/mysql-mmm/mmm_mon.conf

    include mmm_common.conf

     

    <monitor>

        ip                  127.0.0.1

        pid_path            /var/run/mysql-mmm/mmm_mond.pid

        bin_path            /usr/libexec/mysql-mmm

        status_path         /var/lib/mysql-mmm/mmm_mond.status

        ping_ips            10.1.1.1, 10.1.1.113, 10.1.1.75, 10.1.1.108

    # ping_ips 监控了网关IP和其他的DB节点IP

        auto_set_online     60

    </monitor>

     

    <host default>

        monitor_user        mmm_monitor

        monitor_password    monitor_password

    </host>

     

    debug 0

    1.5.3.3   各个DB服务器的配置

    各个DB服务器要配置的东西比较不多,主要有mmm_common.confmmm_agent.conf/etc/default/mysql-mmm-agent文件。

    Ø  db1 的配置

    mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用

    mmm_agent.conf的配置:

    vim /etc/mysql-mmm/mmm_agent.conf

    include mmm_common.conf

    this db1

    mysql-mmm-agent的配置:

    vim /etc/default/mysql-mmm-agent

    ENABLED=1

    Ø  db2 的配置

    mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用

    mmm_agent.conf的配置:

    vim /etc/mysql-mmm/mmm_agent.conf

    include mmm_common.conf

    this db2

    mysql-mmm-agent的配置:

    vim /etc/default/mysql-mmm-agent

    ENABLED=1

     

    Ø  db3 的配置

    mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用

    mmm_agent.conf的配置:

    vim /etc/mysql-mmm/mmm_agent.conf

    include mmm_common.conf

    this db3

    mysql-mmm-agent的配置:

    vim /etc/default/mysql-mmm-agent

    ENABLED=1

    1.5.4 MMM的管理

    1.5.4.1   MMM的启动和停止

    Ø  MMM的启动

    启动mmm agent

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

    agent的启动命令写入到三个DBrc.local文件中

    启动mmm monitor

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

    monitor的启动命令写入到monitor服务器的rc.local文件中

    Ø  MMM的停止

    停止mmm agent

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

    停止mmm monitor

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

    1.5.4.2   MMM的基本管理

    查看集群的状态

    mmm_control show

    db1设置成online状态

    mmm_control set_online db1

    更多管理命令请使用mmm_control help查看,或者参考:

    http://blog.chinaunix.net/uid-20639775-id-154606.html

    1.5.5 MMM架构的测试

    环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:

    Ø  停掉master1后在monitor端使用mmm_control show看是否能切换。看看slave1是否能正确切换同步。

    Ø  启动master1后在monitor端使用mmm_control show看是否能切换。

    Ø  停掉master2后看看能否正确切换。

    1.5.6 MMM架构的监控

    为实现高可用,系统的各个层面都需要全面的监控起来,比如agent进程的监控,monitor进程的监控,mysql可用性的监控,数据库同步的监控等,推荐使用nagios对以上资源进行监控,第一时间发现问题,第一时间处理。

  • 相关阅读:
    操作系统——理论知识
    BEGIN-4 Fibonacci数列
    BEGIN-3 圆的面积
    面向对象三大特征之一:多态
    面向对象三大特征之二:继承
    package---包
    面向对象三大特征之一:封装
    关键字:This(上)
    无参构造与有参构造
    面向对象
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7169790.html
Copyright © 2011-2022 走看看