广告
返回顶部
首页 > 资讯 > 数据库 >MySQL - MMM 实现 MySQL 高可用
  • 171
分享到

MySQL - MMM 实现 MySQL 高可用

2024-04-02 19:04:59 171人浏览 薄情痞子
摘要

MMM (Master-Master replication manager for Mysql,mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语

  • MMM (Master-Master replication manager for Mysqlmysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发,主要用来监控和管理 Mysql Master-Master(双主)复制,虽然也叫双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时备选主的预热,可以说 MMM 这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个 Slave 的 read 负载均衡

  • MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟 ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于 MMM 无法完全保证数据的一致性,所以 MMM 适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。对于那些对数据的一致性要求很高的业务,非常不建议采用 MMM 这种高可用架构

  • 关于 MMM 高可用架构的说明如下:
    mmm_mon:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行。
    mmm_agent:运行在每个 MySQL 服务器上的代理进程,完成监控的探针工作和执行简单的远端服务shezhi.cijiaoben需要在被监管机上运行。
    mmm_control:一个简单的脚本,提供管理 mmm_mond 进程的命令。
    mysql-mmm 的监管端会提供多个虚拟 IP (VIP),包括一个可写 VIP,多个可读 VIP,通过监管的管理,这些 IP 会绑定在可用 MySQL 之上,当某一台 MySQL 宕机时,监管会将 VIP 迁移至其他 MySQL。

部署环境

主机 操作系统 IP地址 VIP地址
mysql-m1主服务器 Centos 7.4 x86_64 192.168.100.200 192.168.100.100(Writer)
mysql-m2主服务器 CentOS 7.4 x86_64 192.168.100.201 192.168.100.100(Writer)
mysql-monitor CentOS 7.4 x86_64 192.168.100.204
mysql-m3从服务器 CentOS 7.4 x86_64 192.168.100.202 192.168.100.101(Reader)
mysql-m4从服务器 CentOS 7.4 x86_64 192.168.100.203 192.168.100.102(Reader)

开始部署

  • 安装所需软件包,修改配置文件(四台MySQL服务器操作一致)
  1. 搭建ALI云源,安装epel-release源。

    wget -O /etc/yum.repos.d/CentOS-Base.repo Http://mirrors.aliyun.com/repo/Centos-7.repo    #下载ALI云源
    yum -y install epel-release    #安装epel-release源
    yum clean all && yum makecache    #清空缓存,生成新的缓存文件
  2. 安装 MariaDB 数据库,开启服务(和MySQL同源,搭建步骤相同)

    yum -y install mariadb-server mariadb
    systemctl stop firewalld.service
    setenforce 0
    systemctl start mariadb
  3. 修改数据库主配置文件,发往其他主机并启动服务器
    # vim /etc/my.cnf
    [mysqld]
    log_error=/var/lib/mysql/mysql.err    #错误日志文件位置
    log=/var/lib/mysql/mysql_log.log    #访问日志文件位置
    log_slow_queries=/var/lib/mysql_slow_queris.log    #慢日志文件位置
    binlog-ignore-db=mysql,infORMation_schema    #不生成二进制文件的库
    character_set_server=utf8    #使用的字符集
    log_bin=mysql_bin    #二进制日志文件功能
    server_id=1
    log_slave_updates=true    #开启同步
    sync_binlog=1
    auto_increment_increment=2
    auto_increment_offset=1
    # scp /etc/my.cnf root@192.168.100.201:/etc
    # scp /etc/my.cnf root@192.168.100.202:/etc
    # scp /etc/my.cnf root@192.168.100.203:/etc
    # 注:另外三台主机的配置文件里的server_id要做修改,保证不一致即可
  • 配置主主复制(m1和m2两台主服务器互相同步)
  • 查看对方的日志文件名称和偏移值

    mysql> show master status;
  • 主服务器互相提升访问权限(m1、m2服务器分别执行)

    # mysql-m1
    grant replication slave on *.* to 'replication'@'172.168.100.%' identified by '123456';
    # 使用账户为replication 密码为123456
    change master to master_host='172.168.100.201',master_user='replication',master_passWord='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    # 当在MariaDB-m1上执行时,master_host地址为MariaDB-m2地址
    ···
    # mysql-m2
    grant replication slave on *.* to 'replication'@'172.168.100.%' identified by '123456';
    change master to master_host='172.168.100.200',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    # 当在MariaDB-m2上执行时,master_host地址为MariaDB-m1地址
  • 开启同步,查看服务器的主从状态

    start slave;
    show slave status\G;
    # Slave_IO_Running: Yes
    # Slave_SQL_Running: Yes
  • 配置m3、m4服务器作为从服务器

    show master status;
    # 查看m1服务器的日志文件以及偏移值(注意日志文件和偏移值的改变)
    # m1和m2互相同步,在此只需执行m1即可
    change master to master_host='172.168.100.200',master_user='replication',master_password='123456',master_log_file='mysql_bin.000004',master_log_pos=245;
    # m3和m4上分别执行
  • 分别查看m3和m4的主从状态

    start slave;
    show slave status\G;
    # Slave_IO_Running: Yes
    # Slave_SQL_Running: Yes
  • 安装配置MMM架构
    前面我们使用wget配置了ALI云源并简易安装 MariaDB 来代替 MySQL ,并搭建了主主同步,主从复制以便完成实验,现在我们来完成MMM架构

  • 安装mysql-mmm,修改配置文件(五台主机配置相同)

    # yum -y install mysql-mmm*     //前面我们配置了epel源,直接yum安装
    # vim /etc/mysql-mmm/mmm_common.conf  //配置如下
    active_master_role      writer
    <host default>
    cluster_interface       ens33
    pid_path                /run/mysql-mmm-agent.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        replication
    replication_password    123456
    agent_user              mmm_agent
    agent_password          123456
    </host>
    <host db1>
    ip      172.168.100.200
    mode    master
    peer    db2
    </host>
    <host db2>
    ip      172.168.100.201
    mode    master
    peer    db1
    </host>
    <host db3>
    ip      172.168.100.202
    mode    slave
    </host>
    <host db4>
    ip      172.168.100.203
    mode    slave
    </host>
    <role writer>
    hosts   db1, db2
    ips     172.168.100.100
    mode    exclusive
    </role>
    <role reader>
    hosts   db3, db4
    ips     172.168.100.101, 172.168.100.102
    mode    balanced
    </role>
  • 快速为其他主机修改配置文件

    scp mmm_common.conf root@192.168.100.200:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.201:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.202:/etc/mysql-mmm/
    scp mmm_common.conf root@192.168.100.203:/etc/mysql-mmm/
  • 在主机上修改mmm_agent.conf文件的名称

    # vim /etc/mysql-mmm/mmm_agent.conf
    this db1  //按照规划分别修改为db1、db2、db3、db4
  • 在所有主机上对mmm_agent、mmm_moniter进行授权

    mysql> grant super, replication client, process on *.* to 'mmm_agent'@'192.168.100.%' identified by '123456';
    mysql> grant replication client on *.* to 'mmm_monitor'@'192.168.100.%' identified by '123456';
    # flush privileges;  //重新加载权限表
  • 配置监控主机(在mysql-monitor上配置)

    # vim /etc/mysql-mmm/mmm_mon.conf
    include mmm_common.conf
    <monitor>
    ip                  127.0.0.1
    pid_path            /run/mysql-mmm-monitor.pid
    bin_path            /usr/libexec/mysql-mmm
    status_path         /var/lib/mysql-mmm/mmm_mond.status
    ping_ips            172.168.100.200,172.168.100.201,172.168.100.202,172.168.100.203
    auto_set_online     10    #上线时间修改为10s
    # The kill_host_bin does not exist by default, though the monitor will
    # throw a warning about it missing.  See the section 5.10 "Kill Host
    # Functionality" in the pdf documentation.
    #
    # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host
    #
    </monitor>
    <host default>
    monitor_user        mmm_monitor
    monitor_password    123456
    </host>
    debug 0
  • 关闭防火墙及增强×××

    systemctl disable firewalld.service
    systemctl stop firewalld.service
    setenforce 0
  • 启动服务,查看各节点状态
    systemctl start mysql-mmm-monitor.service
    # ERROR: Can't connect to monitor daemon!,如若出现报错,可尝试重启服务解决
    mmm_control check all
    # 检查监控服务器对所有主机的监控是否完善
    # 检查结果全部OK,则部署完成

至此,MySQL-MMM已经部署成功,进一步的话,我们可以结合Amoeba实现读写分离,Writer 的虚拟VIP可以写入数据库,而 Reader 可以用来读取数据。并通过Keepalived对 monitor 服务器进行双机热备。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL - MMM 实现 MySQL 高可用

本文链接: https://www.lsjlt.com/news/43341.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL - MMM 实现 MySQL 高可用
    MMM (Master-Master replication manager for MySQL,MySQL 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语...
    99+
    2022-10-18
  • MySQL-MMM 高可用
    MMM 简介         MMM (Master-Master relication manager fro MySQL ...
    99+
    2022-10-18
  • MySQL 高可用之MMM
    原文地址:...
    99+
    2021-09-05
    MySQL 高可用之MMM 数据库入门 数据库基础教程 数据库 mysql
  • MySQL-MMM高可用群集
    一、MMM简介1、MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。2、MMM是一套灵...
    99+
    2022-10-18
  • mysql MMM高可用的部署
    这篇文章给大家分享的是mysql MMM高可用的部署,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。1 环境:1.1 OS and MYSQL verson:...
    99+
    2022-10-18
  • Mysql-MMM高可用群集部署
    何为MMM?MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言...
    99+
    2022-10-18
  • mysql高可用中MMM高可用mysql方案是怎么样的
    这期内容当中小编将会给大家带来有关mysql高可用中MMM高可用mysql方案是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 MMM高可用mysql方案 ...
    99+
    2022-10-19
  • MySQL高可用架构-MMM、MHA、MGR、PXC
    主从复制如何工作 在主库把数据记录到binlog(二进制日志)。 备库开IO线程把binlog复制到自己的relaylog(中继日志)。 备库读取中继日志,重放到备库上。 半同步复制 半同步复制可以确保备库拥有主库数据的拷...
    99+
    2015-08-21
    MySQL高可用架构-MMM MHA MGR PXC
  • MySQL+MMM 高可用集群部署(二)
    接上期,MySQL主从同步我们已经部署完成,接下来,我们开始部署本期的核心---MMM高可用集群四、MMM高可用集群部署    1、安装依赖包  ...
    99+
    2022-10-18
  • MySQL高可用群集------配置MMM高可用架构
    MMM简介: MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语...
    99+
    2022-10-18
  • 如何部署MySQL-MMM高可用群集
    如何部署MySQL-MMM高可用群集,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。简介MMM(Master-Master re...
    99+
    2022-10-18
  • mysql系列之9--------mmm高可用集群
    mmm高可用集群介绍:     高可用集群介绍:主备模式,当主不能提供服务的时候备用主机接替它提供服务。这个过程对于客户端是透明的。一、前期准备工作 1、准备五台li...
    99+
    2022-10-18
  • MMM高可用实验
    1 环境:1.1 OS and MYSQL verson: [root@mysql01 ~]# uname -a Linux mysql01 3.10.0-327.18.2.el7.x86_64 #1 SM...
    99+
    2022-10-18
  • MySQL 5.6通过MMM实现读写分离的高可用架构
    上一篇博文我们使用keepalived+主从同步搭建了一个简单的MySQL高可用架构(详见https://blog.51cto.com/jiangjianlong/1981994),今天再分享下通过MMM搭...
    99+
    2022-10-18
  • 怎么在MySQL数据库中实现MMM高可用群集架构
    这篇文章给大家介绍怎么在MySQL数据库中实现MMM高可用群集架构,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MMM高可用架构说明mmm_mond:监控进程,负责所有的监控工作,决定...
    99+
    2022-10-18
  • 基于MMM搭建MySQL Replication集群高可用架
    MMM介绍 MMM是Multi-Master Replication Manager for MySQL的缩写,它是MySQL提供的一个多主复制管理器,其核心是使用perl语言编写的一组脚本。实际上MMM是...
    99+
    2022-10-18
  • MySQL高可用架构-MMM、MHA、MGR、PXC(补小结,laoqi)
    小结 MMM是 MHA是 MGR是 主从复制如何工作 在主库把数据记录到binlog(二进制日志)。 备库开IO线程把binlog复制到自己的relaylog(中继日志)。 备库读取中继日志,重放到备库上。 半同步复制 半...
    99+
    2019-01-17
    MySQL高可用架构-MMM MHA MGR PXC(补小结,laoqi)
  • MySQL中MMM高可用架构的安装配置流程
    下文我给大家简单讲讲关于MySQL中MMM高可用架构的安装配置流程,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完MySQL中MMM高可用架构的安装配置流程对大家多少有点帮助吧...
    99+
    2022-10-18
  • MySQL—MMM高可用群集的搭建(全过程,纯干货~~)
    本篇文章主要介绍搭建MMM方案以及MMM架构的原理。MMM方案不适用对数据一致性要求很高的业务。下面一起来学习学习。 先来看看具体的架构拓扑,如下: 其中, 角色 Hosts IP地址 应用属性 V...
    99+
    2022-10-18
  • MySQL基操---高可用架构MMM搭建与容灾测试
    MMM介绍MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理My...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作