mysql高可用中MMM高可用mysql方案是怎么样的

发布时间:2021-12-27 13:58:36 作者:柒染
来源:亿速云 阅读:91

这期内容当中小编将会给大家带来有关mysql高可用中MMM高可用mysql方案是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

MMM高可用mysql方案

方案简介

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

  1. 方案优缺点

优点:安全性、稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。
缺点:至少三个节点,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。

  1. 方案架构图

  1. 适用场景

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

  1. 方案实战

    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. MMM的安装

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

wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
rpm -Uvh epel-release-5-3.noarch.rpm

安装monitor的安装:

yum -y install mysql-mmm*

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

yum -y install mysql-mmm-agent

  1. MMM的配置

    1. 配置之前的准备

前提是要配置好master1和master2的主主同步,master1和slave1的主从同步,限于篇幅这里我就不做介绍了。
在配置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. Monitor服务器的配置

  2. 的配置文件在/etc/mysql-mmm目录下,monitor需要配置的文件有mmm_common.conf、mmm_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尤其注意是db1的IP
    mode    master
    peer    db2
</host>
 
<host db2>
    ip      10.1.1.75    #这个IP尤其注意是db2的IP
    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. 各个DB服务器的配置

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

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf
this db1

vim /etc/default/mysql-mmm-agent

  1.  

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf
this db2

vim /etc/default/mysql-mmm-agent

  1.  

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf
this db3

vim /etc/default/mysql-mmm-agent

  1.  

  1. MMM的管理

    1. MMM的启动和停止

启动mmm agent

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

将agent的启动命令写入到三个DB的rc.local文件中
启动mmm monitor

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

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

停止mmm agent

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

停止mmm monitor

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

  1. MMM的基本管理

查看集群的状态

mmm_control show

将db1设置成online状态

mmm_control set_online db1

更多管理命令请使用mmm_control help查看,或者参考:
http://blog.chinaunix.net/uid-20639775-id-154606.html

  1. MMM架构的测试

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

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

上述就是小编为大家分享的mysql高可用中MMM高可用mysql方案是怎么样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. mysql MMM高可用的部署
  2. MySQL高可用MMM架构的搭建

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mmm mysql

上一篇:Hinerbate单端关联代理的示例分析

下一篇:Android如何自定View实现滑动验证效果

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》