iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MariaDB-MMM高可用群集
  • 572
分享到

MariaDB-MMM高可用群集

2024-04-02 19:04:59 572人浏览 独家记忆
摘要

什么是MMM? MMM(Mysql主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理mysql Master-Master(双主)复制,虽然叫做

什么是MMM?

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

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

MMM是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理MySQL Master-Master复制的配置。

关于MMM高可用架构的说明如下

  • mmm_mon:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上面运行
  • mmm_agent:运行在每个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用户。

什么是MariaDB数据库

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括api和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。

项目环境

本次项目使用五台Centos7服务器模拟搭建

主机 操作系统 IP地址 VIP 主要软件
MariaDB-m1 主服务器 CentOS-7-x86_64 172.16.10.23 172.16.10.100 MariaDB、MMM
MariaDB-m2 主服务器 CentOS-7-x86_64 172.16.10.20 172.16.10.100 MariaDB、MMM
MariaDB-m3 从服务器 CentOS-7-x86_64 172.16.10.24 172.16.10.110 MariaDB、MMM
MariaDB-m4 从服务器 CentOS-7-x86_64 172.16.10.22 172.16.10.120 MariaDB、MMM
MariaDB-monitor CentOS-7-x86_64 172.16.10.21 MMM

MariaDB-MMM高可用群集

搭建MariaDB多主多从模式

安装MariaDB

配置ALI云源,安装epel-release源
wget -O /etc/yum.repos.d/CentOS-Base.repo Http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum clean all && yum makecache   //清空所有,重新更新元数据缓存

配置epel源须在五台服务器上都操作

安装mariadb
yum -y install mariadb-server mariadb
关闭防火墙及selinux防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
setenforce 0

以上三个步骤在另外三台数据库服务器上一摸一样,重复三遍

配置mariadb配置文件

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        //mysql,information_schema这两个数据库不生成二进制日志文件
character_set_server=utf8
log_bin=mysql_bin                                //二进制日志文件功能开启
server_id=10                                     //id每台都不相同
log_slave_updates=true                           //开启同步
sync_binlog=1                                    //1为安全值
auto_increment_increment=2
auto_increment_offset=1
开启服务
systemctl start mariadb    //开启服务
netstat -anpt | grep 3306  //查看服务状态

配置文件修改时,只需将原有的[mysqld]直接删除,大约九行。替换为以上内容,四台服务器(MariaDB-m1、MariaDB-m2、MariaDB-m3、MariaDB-m4)的修改方法基本一致,唯一的不同是server_id不可相同,只要不同即可。
MariaDB-MMM高可用群集

配置MariaDB-m1、MariaDB-m2主主模式

  • 先查看log bin日志和pos值的位置
    在MariaDB-m1、MariaDB-m2中分别进行操作
    mysql   //登陆数据库
    show master status;

    MariaDB-MMM高可用群集
    MariaDB-MMM高可用群集

  • MariaDB-m1、MariaDB-m2互相提升访问权限
    在两台主服务器上分别执行
    #MariaDB-m1
    grant replication slave on *.* to 'replication'@'172.16.10.%' identified by '123456';
    //使用账户为replication 密码为123456
    change master to master_host='172.16.10.20',master_user='replication',master_passWord='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    //当在MariaDB-m1上执行时,master_host地址为MariaDB-m2地址
    ···
    #MariaDB-m2
    grant replication slave on *.* to 'replication'@'172.16.10.%' identified by '123456';
    //在两台master上分别执行,slave不需要执行
    change master to master_host='172.16.10.23',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
    //当在MariaDB-m2上执行时,master_host地址为MariaDB-m1地址
  • 开启同步,同时查看服务器的主从状态
    Slave_IO_Running: Yes、Slave_SQL_Running: Yes这两个条目的结果,必须为yes
    start slave;
    show slave status\G;

    MariaDB-MMM高可用群集
    MariaDB-MMM高可用群集

    测试主主同步是否成功

    在主服务器上创建一个库,然后查看从服务器上是否有新创建的库,若新创建库存在;则再尝试在从服务器上删除新创建的库,若是此时主服务器上的库被成功删除,则表示主主复制创建成功。

    配置MariaDB-m3、MariaDB-m4作为MariaDB-m1的从服务器

    在MariaDB-m3、MariaDB-m4上进行操作

  • 查看MariaDB-m1上log bin日志和pos值的位置
    mysql
    show master status;

    注意日志文件和位置参数的改变
    MariaDB-MMM高可用群集

  • 在MariaDB-m3、MariaDB-m4上分别执行
    change master to master_host='172.16.10.23',master_user='replication',master_password='123456',master_log_file='mysql_bin.000004',master_log_pos=245;
  • 分别查看MariaDB-m3、MariaDB-m4上主从状态
    start slave;
    show slave status\G;

    MariaDB-MMM高可用群集
    MariaDB-MMM高可用群集

    安装配置MMM

    安装MMM

    我们在最开始的操作中已经对所有的五台服务器都安装了epel源,所以这里只需要使用yum安装即可,所有的服务器都需安装mysql-mmm*

    yum -y install mysql-mmm*
    配置MMM

    五台服务器中的该配置文件都是相同的

    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.16.10.23
    mode    master
    peer    db2
    </host>
    <host db2>
    ip      172.16.10.20
    mode    master
    peer    db1
    </host>
    <host db3>
    ip      172.16.10.24
    mode    slave
    </host>
    <host db4>
    ip      172.16.10.22
    mode    slave
    </host>
    <role writer>
    hosts   db1, db2
    ips     172.16.10.100
    mode    exclusive
    </role>
    <role reader>
    hosts   db3, db4
    ips     172.16.10.110, 172.16.10.120
    mode    balanced
    </role>
    </host>
    <host db4>
    ip      172.16.10.22
    mode    slave
    </host>
    <role writer>
    hosts   db1, db2
    ips     172.16.10.100
    mode    exclusive
    </role>
    <role reader>
    hosts   db3, db4
    ips     172.16.10.110, 172.16.10.120
    mode    balanced
    </role>

    MariaDB-MMM高可用群集

快速为其他服务器修改配置文件
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.20:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.24:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.22:/etc/mysql-mmm/
scp /etc/mysql-mmm/mmm_common.conf root@172.16.10.21:/etc/mysql-mmm/

MariaDB-MMM高可用群集

在数据库主机上修改/etc/mysql-mmm/mmm_agent.conf文件,根据不同主机,修改不同的名称
vim /etc/mysql-mmm/mmm_agent.conf
this db1  //按着顺序分别修改为db1、db2、db3、db4

MariaDB-MMM高可用群集

对所有数据库服务器进行一波安排
  • 在所有数据库上为mmm_agent授权
    grant super, replication client, process on *.* to 'mmm_agent'@'172.16.10.%' identified by '123456';
  • 在所有数据库上为mmm_moniter授权
    grant replication client on *.* to 'mmm_monitor'@'172.16.10.%' identified by '123456';
  • 重新加载权限表
    flush privileges;
  • 在所有数据库服务器上启动mysql-mmm-agent
    systemctl start mysql-mmm-agent.service    //开启服务
    systemctl enable mysql-mmm-agent.service   //加入开机自启动

    配置监控主机

    在监控主机(MariaDB-monitor)上修改/etc/mysql-mmm/mmm_mon.conf文件
    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.16.10.23,172.16.10.20,172.16.10.24,172.16.10.22
    auto_set_online     10
    # 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

    MariaDB-MMM高可用群集

关闭防火墙及selinux防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
setenforce 0
启动服务,查看各节点状态
systemctl start mysql-mmm-monitor.service

MariaDB-MMM高可用群集
ERROR: Can't connect to monitor daemon!,如若出现报错,可尝试重启服务解决

查看监控服务器对所有数据库的监控是否完善
mmm_control checks all  //检查结果需为全部ok

MariaDB-MMM高可用群集

故障测试

停止m1,查看VIP是否为漂移到m2上
systemctl stop mariadb.service   //关闭m1

MariaDB-MMM高可用群集

systemctl start mariadb.service  //开启m1 主不会抢占

MariaDB-MMM高可用群集

停止m3,查看VIP漂移状态
systemctl stop mariadb.service   //关闭m3

MariaDB-MMM高可用群集

systemctl start mariadb.service   //开启m3,VIP会重新回到各自服务器上

MariaDB-MMM高可用群集

您可能感兴趣的文档:

--结束END--

本文标题: MariaDB-MMM高可用群集

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

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

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

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

下载Word文档
猜你喜欢
  • 如何部署MySQL-MMM高可用群集
    如何部署MySQL-MMM高可用群集,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。简介MMM(Master-Master re...
    99+
    2024-04-02
  • 怎么在MySQL数据库中实现MMM高可用群集架构
    这篇文章给大家介绍怎么在MySQL数据库中实现MMM高可用群集架构,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MMM高可用架构说明mmm_mond:监控进程,负责所有的监控工作,决定...
    99+
    2024-04-02
  • Nginx的高可用集群
    1、什么是 nginx高可用 只有一台nginx服务器时,如果nginx服务器宕机了,那么请求就无法访问。 要实现高可用,那就可以部署多台nginx服务器,下面以两台nginx服务器为例,示意图如下: 要配置nginx集群,至少需要满...
    99+
    2023-09-04
    nginx 服务器 运维 keepalived 检测
  • harbor高可用集群配置
    arbor是由VMWare在Docker Registry的基础之上进行了二次封装,加进去了很多额外程序,而且提供了一个非常漂亮的web界面。说明...
    99+
    2023-06-05
  • 使用Docker Compose、Nginx和MariaDB构建高可用性的PHP应用程序集群
    引言:随着互联网的普及,Web应用程序的开发和部署变得更加复杂。为了提高Web应用程序的可用性和可扩展性,很多开发者开始使用容器化技术来构建高可用性的应用程序集群。本文将介绍如何使用Docker Compose、Nginx和MariaDB来...
    99+
    2023-10-21
    Docker nginx compose
  • Redis高可用集群是什么
    这篇文章主要介绍“Redis高可用集群是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis高可用集群是什么”文章能帮助大家解决问题。几种 Redis 高可...
    99+
    2024-04-02
  • SpringCloud 高可用的 Eureka Server 集群
    一:为什么要搭建Eureka Server 集群在一个分布式系统中,服务注册中心是最重要的基础部分,如果是单点话,遇到故障就是毁灭性的,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka通过互相注册的方...
    99+
    2023-06-02
  • 配置MySQL高可用集群MHA
    配置MySQL高可用集群+++++++++++++++++++主机角色 :客户端 client50数据库服务器 mysql51 到 mysql55管理主机 mgm56VIP地址 ...
    99+
    2024-04-02
  • Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境
    小编给大家分享一下Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获...
    99+
    2024-04-02
  • MySQL中的MMM集群部署是怎样的
    MySQL中的MMM集群部署是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MySQL-MMM集群部署MMM(Maste...
    99+
    2024-04-02
  • Linux集群的高可用性介绍
    这篇文章主要介绍“Linux集群的高可用性介绍”,在日常操作中,相信很多人在Linux集群的高可用性介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux集群的高可用性介绍”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • mysql高可用集群如何搭建
    要搭建MySQL高可用集群,可以按照以下步骤进行操作: 选择合适的集群架构:常用的MySQL集群架构有主从复制、主备切换和主主复...
    99+
    2023-10-24
    mysql
  • 如何配置高可用RabbitMQ集群
    这篇文章给大家分享的是有关如何配置高可用RabbitMQ集群的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开...
    99+
    2023-06-27
  • CentOS7怎么搭建高可用集群
    这篇文章主要讲解了“CentOS7怎么搭建高可用集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS7怎么搭建高可用集群”吧!一、安装集群软件必须软件pcs,pacemaker,c...
    99+
    2023-06-28
  • Keepalived+HAProxy高可用集群K8S实现
    本文采用Keepalived+HAProxy的方式构建高可用集群。当你如果你有硬件负载均衡设备当然更好了。 准备环境: 主机ipk8s-master01192.168.10.4k8s...
    99+
    2024-04-02
  • Redis高可用集群redis-cluster详解
    哨兵模式主要解决了手动切换主从节点的问题 1 , 哨兵模式的缺陷 .主从节点切换的时候存在访问瞬断,等待时间较长, .只有一个master节点提供写,slave节点提供读,尽管写的效...
    99+
    2024-04-02
  • mysql高可用中MMM高可用mysql方案是怎么样的
    这期内容当中小编将会给大家带来有关mysql高可用中MMM高可用mysql方案是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 MMM高可用mysql方案 ...
    99+
    2024-04-02
  • Rancher 2.4.3 - HA 部署高可用k8s集群
    对于生产环境,需以高可用的配置安装 Rancher,确保用户始终可以访问 Rancher Server。当安装在Kubernetes集群中时,Rancher将与集群的 etcd 集成,并利用Kubernetes 调度实现高可用。为确保高可用...
    99+
    2023-01-31
    集群 Rancher k8s
  • 构建双vip的高可用MySQL集群
    目录一、 项目描述:二、项目环境:二、项目步骤:三、项目概念图:四、部署zabbix监控系统4.1 准备:4.2 步骤:五、项目心得:一、 项目描述:     本项目的目的是: 构...
    99+
    2024-04-02
  • postgresql高可用集群的安装步骤
    这篇文章主要讲解了“postgresql高可用集群的安装步骤”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“postgresql高可用集群的安装步骤”吧!一、...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作