广告
返回顶部
首页 > 资讯 > 数据库 >MySQL+MMM 高可用集群部署(二)
  • 195
分享到

MySQL+MMM 高可用集群部署(二)

2024-04-02 19:04:59 195人浏览 泡泡鱼
摘要

接上期,Mysql主从同步我们已经部署完成,接下来,我们开始部署本期的核心---MMM高可用集群四、MMM高可用集群部署    1、安装依赖包  

接上期,Mysql主从同步我们已经部署完成,接下来,我们开始部署本期的核心---MMM高可用集群


四、MMM高可用集群部署

    1、安装依赖包

    由于mmm 是用perl语言写的脚本程序,因此需要在5台服务器中分别安装 perl 和 perl-CPAN

    [root@cluster-mysqlb ~]# yum -y install perl perl-CPAN

    2、yum 安装 mmm

        a、在4台 Mysql 服务器中安装 mysql-mmm-agent

        [root@cluster-mysqla ~]# yum -y install GCc gcc-c++ mysql-mmm-agent

        b、在 monitor 服务器中安装 mysql-mmm-monitor

        [root@cluster-proxy ~]# yum -y install gcc gcc-c++ mysql-mmm-monitor

    3、配置 mmm

        mysql-mmm 的配置文件在 /etc/mysql-mmm目录下,进入该目录

        mysql-mmm-agent 配置文件

        MySQL+MMM 高可用集群部署(二)

        mysql-mmm-monitor 配置文件

        MySQL+MMM 高可用集群部署(二)

        如图,mysql-mmm-agent 的配置文件只有2个,mmm_agent.conf 和 mmm_common.conf,而 mysql-mmm-monitor 的配置文件有4个,原本是3个,因为我这里安装了 mysql-mmm-tools ,因此多了一个mmm_tools.conf

        a、修改公共配置文件 mmm_common.conf

        [root@cluster-mysqla mysql-mmm]# vim mmm_common.conf

        MySQL+MMM 高可用集群部署(二)

        如图:

        (1)、字段解释

            active_master_role      writer                                           #主动的master角色标示,所有数据库服务器都需要开启 read_only 参数,而对于 Write 服务器,监控服务器会自动将 read_only 属性关闭,也就是将其值设为1

            <host default>
            cluster_interface       eth0                                               #集群网络接口
            pid_path                /run/mysql-mmm-agent.pid            #mmm-agent进程pid文件路径
            bin_path                /usr/libexec/mysql-mmm/               #可执行文件路径
            replication_user        slaveuser                                       #复制用户
            replication_passWord    123456                                      #复制用户的密码
            agent_user              mmmagent                                     #代理用户
            agent_password          123456                                       #代理用户的密码
            </host>

            <host mastera>                                                              #这里写 mastera 的主机名
            ip      192.168.20.134                                                       #mastera 的 IP 地址
            mode    master                                                                #角色模式:master   表示主库
            peer    masterb                                                                #与 mastera 同等的主库的主机名称,也就是说向 mastera 同步数据的数据库的主机的名称,因此为 masterb
            </host>

            <host masterb>                                                              #这里的属性同 mastera
            ip      192.168.20.128
            mode    master
            peer    mastera
            </host>

            <host slavea>                                                                  #从库的主机名称
            ip      192.168.20.129                                                        #从库的 IP 地址
            mode    slave                                                                    #角色模式:该主机为 masterb 的从数据库,因此为 slave
            </host>

            <host slaveb>                                                                  #这里的属性同 slavea
            mode    slave
            </host>

            <role writer>                                                                    #Write 角色配置
            hosts   mastera, masterb  #具有写操作的主机名称,这里的配置可以写单个,也可以写多个,写单个的时候,可以避免在网络延迟过大时切换Write,但是当master出现故障时,就无法进行write了,只能对外提供read操作了
            ips     192.168.20.254                                           #对外提供写操作的虚拟 IP 地址
            mode    exclusive                                                 #模式,exclusive 表示只允许存在一个主数据库,也就是只能写 一个虚拟 IP 地址
            </role>

            <role reader>                                                                    #read 角色配置
            hosts   slavea, slaveb                                                         #对外提供 read 操作的服务器的主机的名称,这里也可以写master进来,写进来时,master也对外提供 read 操作
            ips     192.168.20.253, 192.168.20.252                               #对外提供 read 操作的虚拟 IP 地址,为了实现负载均衡,这里的虚拟 IP 地址至少应该和 read 数据库服务器数量相同
            mode    balanced                                                               #模式,balanced 表示负载均衡
            </role>

        (2)、mmm_common.conf配置文件修改

                如果在服务器中有多张网卡,则需要在 cluster_interface 字段中指定网卡名称

                按照上面的格式修改公共配置文件,修改完后复制到其他4台服务器中

                scp /etc/mysql-mmm/mmm_common.conf root@192.168.20.128:/etc/mysql-mmm

                scp /etc/mysql-mmm/mmm_common.conf root@192.168.20.129:/etc/mysql-mmm

                scp /etc/mysql-mmm/mmm_common.conf root@192.168.20.130:/etc/mysql-mmm

                scp /etc/mysql-mmm/mmm_common.conf root@192.168.20.131:/etc/mysql-mmm

        (3)、mmm_agent.conf配置文件修改

            [root@cluster-mysqla mysql-mmm]# vim mmm_agent.conf

            MySQL+MMM 高可用集群部署(二)

            如图,改配置文件只需要修改图中标示部分,因此,如果服务器是 mastera ,就改为 this mastera ,如果服务器是 masterb ,就改为 this masterb ,以此类推

        (4)、修改 mysql-mmm-monitor 的配置文件 mmm_mon.conf

            [root@cluster-proxy mysql-mmm]# vim mmm_mon.conf

            MySQL+MMM 高可用集群部署(二)

            如上图,字段解释

      include mmm_common.conf                                                                                                 #调用 mmm_common.conf 配置文件
      <monitor>
      ip                  192.168.20.131                                                                                                  #监控主机 IP 地址
      pid_path            /run/mysql-mmm-monitor.pid                                                                    #监控进程 pid 文件目录
      bin_path            /usr/libexec/mysql-mmm                                                                            #可执行文件目录
      status_path         /var/lib/mysql-mmm/mmm_mond.status                                                 
      ping_ips            192.168.20.134, 192.168.20.128, 192.168.20.129, 192.168.20.130               #这里写4台数据库服务器的 IP 地址
      auto_set_online     60

      # 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        monitor                                                                              #监控用户
      monitor_password    123456                                                                          #监控用户密码
     </host>

      debug 0

        按照上面的格式,配置好 mmm_mond.conf

    b、启动 mmm 服务

        在4台 MySQL 服务器中启动 mysql-mmm-agent 服务

        [root@cluster-mysqla mysql-mmm]# mmm_agentd start

        在监控服务器中驱动 mysql-mmm-monitor 服务

        [root@cluster-proxy mysql-mmm]# mmm_mond start

    c、在 monitor 服务器查看其他4台服务器的状态

        [root@cluster-proxy mysql-mmm]# mmm_control show

        MySQL+MMM 高可用集群部署(二)

        如上图,表示4台数据库服务器配置 mmm 配置 OK。

    d、测试虚拟 IP 地址是否能够 ping 通

        如果能够 ping 通,说明 mysql-mmm 部署成功,如果无法 ping 通,则说明在主机上虚拟 IP 地址没有设置成功,这时候,我们需要在 5 台数据库服务器上执行以下命令

        [root@cluster-mysqla mysql-mmm]# perl -MCPAN -e shell

        如图:

        MySQL+MMM 高可用集群部署(二)

        cpan[1]> install Net::ARP

        如果在执行 perl -MCPAN -e shell 该命令时报错   Can't locate CPAN.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .).



        说明,我们没有安装 perl-CPAN,用 yum 安装即可

        执行完上述命令之后,在分别在4台服务器中执行下列命令

        mastera

        [root@cluster-mysqla mysql-mmm]# /usr/libexec/mysql-mmm/agent/configure_ip /etc/mysql-mmm/mmm_common.conf ens33 192.168.20.254

        masterb

        [root@cluster-mysqlb mysql-mmm]# /usr/libexec/mysql-mmm/agent/configure_ip /etc/mysql-mmm/mmm_common.conf ens33 192.168.20.254

        slavea
        [root@cluster-mysqlc mysql-mmm]# /usr/libexec/mysql-mmm/agent/configure_ip /etc/mysql-mmm/mmm_common.conf ens33 192.168.20.253

        slaveb

        [root@cluster-mysqld mysql-mmm]# /usr/libexec/mysql-mmm/agent/configure_ip /etc/mysql-mmm/mmm_common.conf ens33 192.168.20.252

        执行上面命令之后,在 ping 虚拟 IP 地址,ping 测试 OK,能够 ping 通

        最后,在查看4台数据库服务器的状态

        [root@cluster-proxy mysql-mmm]# mmm_control checks all

        如图:

        MySQL+MMM 高可用集群部署(二)

        如果全是 OK ,说明我们的 mysql-mmm 服务部署成功

        上面的地2列的意思分别是:

        ping:ping 测试,可以 ping 通时 OK,否则,请按照上述操作检查

        mysql:mySQL Server 在线时 OK,否则,请检查 mysql server 是否有停止

        rep_threadh:复制线程正在运行时 OK,否则请排查复制线程未运行的原因,常见可能原因为:1、监控和复制所用的用户名、密码错误;2、主从同步出现故障

        rep_backlog:复制挤压的日志很少时 OK,否则可能是服务器处理速度太慢或者数据量太大

    e、mmm_control 名词解释

        如图:

        MySQL+MMM 高可用集群部署(二)

        check:查看指定 host 或者所有主机的指定状态或者所有状态

        show:查看当前集群状态

        set_online:把 host 的状态由AWAITING_RECOVERY或者ADMIN_OFFLINE恢复到ONLINE

        set_offline:把 host 的状态手动设置为ADMIN_OFFLINE,并且会停止mysql复制

        mode:打印当前monitor的运行模式

        set_active:切换monitor进程为主动模式

        set_passive:切换monitor进程为被动模式

        set_manual:切换monitor进程为手动模式

        move_role:将write角色切换到其他主机

    f、测试mysql-mmm在服务故障情况下是否能够自动切换,这里值提供方法

        测试方法为:

        停止 mastera 的 mysql 服务,查看 writer(192.168.20.254) 是否能够切换到 masterb,随后开启 mastera 的 mysql 服务,在手动停止 masterb 的 mysql 服务,查看 writer(192.168.20.254) 是否能够切换到 mastera ,如果都能,则说明,我们的mysql-mmm集群部署时OK的,如果不能,请检查mmm_common.conf配置文件是否有错。当然还有其他测试思路,这里就不一一列举了。

        

五、连接MMM集群

    部署完 mysql-mmm 集群,这时候我们就迫不及待的想要用我们现有的应用服务去连接

    首先,我们在mastera新建一个MySQL账号game

    mysql> grant all privileges on *.* to game@"%" identified by "123456";

    mysql> flush privileges;

    然后,我们在我们的应用服务器上连接虚拟 IP(192.168.20.254、192.168.20.253、192.168.20.252)

        a、连接192.168.20.254创建一个数据库

        [root@WEBa ~]# mysql -h292.168.20.254 -ugame -p123456

        MySQL+MMM 高可用集群部署(二)

        MySQL [(none)]> create database web;

        MySQL+MMM 高可用集群部署(二)

        b、连接192.168.20.253、192.168.20.252查看刚才创建的数据库是否存在

        [root@webb ~]# mysql -h292.168.20.253 -ugame -p123456

            MySQL+MMM 高可用集群部署(二)

        [root@webb ~]# mysql -h292.168.20.252 -ugame -p123456

        MySQL+MMM 高可用集群部署(二)

        有图可见,我们连接192.168.20.254创建的数据库,在连接192.168.20.253和192.168.20.252后也能看得到,说明一切OK

        注意:连接192.168.20.254时,最好能够切换 mastera 和 masterb 进行连接建库测试,在这期间有可能会出现以下报错:

                  1209 - The MySQL server is running with the --read-only option so it cannot execute this statement

                  出现这个错误原因是,mmm 将主数据库设置成了只读模式,我们只需要执行 set global read_only=0; 即可

                 

        到此为止,我们的MySQL主从同步+MMM高可用集群部署完成,我们也列举了一些在部署过程中可能会踩到的坑,但是,在线上部署中,需要具体问题具体分析,所以,在以后的生活中,小弟还会和大佬们共同成长。

        对于以上部署过程,若有疑问,可参照 官方安装文档 。

本节完。

        

您可能感兴趣的文档:

--结束END--

本文标题: MySQL+MMM 高可用集群部署(二)

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

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

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

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

下载Word文档
猜你喜欢
  • 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-mmm集群部署
      90主 <----------> 91主    |    |    |  ------------...
    99+
    2022-10-18
  • 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
  • MariaDB-MMM高可用群集
    什么是MMM MMM(MySQL主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双...
    99+
    2022-10-18
  • MySQL中的MMM集群部署是怎样的
    MySQL中的MMM集群部署是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MySQL-MMM集群部署MMM(Maste...
    99+
    2022-10-18
  • MySQL高可用群集------配置MMM高可用架构
    MMM简介: MMM(Master-Master replication manager for Mysql,Mysql 主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语...
    99+
    2022-10-18
  • mysql系列之9--------mmm高可用集群
    mmm高可用集群介绍:     高可用集群介绍:主备模式,当主不能提供服务的时候备用主机接替它提供服务。这个过程对于客户端是透明的。一、前期准备工作 1、准备五台li...
    99+
    2022-10-18
  • Centos7 下 mysql5.7-mmm 高可用群集
    Centos7 下 mysql5.7-mmm 高可用群集 MMM介绍 MMM( Master- Master replication manager for MYSQL, MYSQL主主复制管理器)是一套支...
    99+
    2022-10-18
  • 基于MMM搭建MySQL Replication集群高可用架
    MMM介绍 MMM是Multi-Master Replication Manager for MySQL的缩写,它是MySQL提供的一个多主复制管理器,其核心是使用perl语言编写的一组脚本。实际上MMM是...
    99+
    2022-10-18
  • Rancher 2.4.3 - HA 部署高可用k8s集群
    对于生产环境,需以高可用的配置安装 Rancher,确保用户始终可以访问 Rancher Server。当安装在Kubernetes集群中时,Rancher将与集群的 etcd 集成,并利用Kubernetes 调度实现高可用。为确保高可用...
    99+
    2023-01-31
    集群 Rancher k8s
  • MySQL—MMM高可用群集的搭建(全过程,纯干货~~)
    本篇文章主要介绍搭建MMM方案以及MMM架构的原理。MMM方案不适用对数据一致性要求很高的业务。下面一起来学习学习。 先来看看具体的架构拓扑,如下: 其中, 角色 Hosts IP地址 应用属性 V...
    99+
    2022-10-18
  • Kubernetes​怎么部署高可用kube-apiserver集群
    这篇文章主要讲解了“Kubernetes怎么部署高可用kube-apiserver集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes怎么部署高可用kube-apiserv...
    99+
    2023-06-29
  • MySQL之高可用集群部署及故障切换实现
    一、MHA  1、概念 2、MHA 的组成 3、MHA 的特点 二、搭建MySQL+MHA 思路和准备工作 MHA架构 数据库安装 一主两从 MHA搭建 故障模拟 模拟主库失效 备选主库成为主库 原故...
    99+
    2022-05-24
    MySQL 高可用集群部署 MySQL 高可用集群 MySQL 故障切换
  • 如何在Kubernetes上部署Redis高可用集群
    如何在Kubernetes上部署Redis高可用集群,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Redis 介绍Redis 代表REmote DI...
    99+
    2023-06-15
  • 怎么在MySQL数据库中实现MMM高可用群集架构
    这篇文章给大家介绍怎么在MySQL数据库中实现MMM高可用群集架构,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MMM高可用架构说明mmm_mond:监控进程,负责所有的监控工作,决定...
    99+
    2022-10-18
  • MySQL之高可用集群部署及故障切换的实现方法
    这篇文章给大家分享的是有关MySQL之高可用集群部署及故障切换的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、MHA 1、概念2、MHA 的组成3、MHA 的特点二、搭建MySQL+MHA思...
    99+
    2023-06-14
  • CapitalOne - Artifactory高可用集群的自动化部署实践
    背景:本文为大家介绍Capital One如何利用自动化流水线实现Artifactory HA集群进行自动化运维。Capital One银行是美国最大的数字化银行之一,在Capital One的devops体系中应用了JFrog&...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作