【DB宝19】在Docker中使用MySQL高可用之MHA

0    4574    8

👉 本文共约4858个字,系统预计阅读时间或需19分钟。

[toc]

【DB宝19】在Docker中使用MySQL高可用之MHA

一、MHA简介和架构

1.1 MHA简介

MHA(Master High Availability Manager and tools for MySQL)目前在MySQL高可用方面是一个相对成熟的解决方案,它是由日本人youshimaton采用Perl语言编写的一个脚本管理工具。MHA是一套优秀的作为MySQL高可用性环境下故障切换主从提升的高可用软件。MHA仅适用于MySQL Replication环境,目的在于维持Master主库的高可用性。在MySQL故障切换过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能最大程度上保证数据库的一致性,以达到真正意义上的高可用。

目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数据库服务器,一主二从,即一台充当Master,一台充当备用Master,另一台充当从库。

1.2 MHA工具包的组成

MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以独立部署在一台独立的机器上管理多个Master-Slave集群,也可以部署在一台Slave上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中Master节点。当Master出现故障时,它可以自动将具有最新数据的Slave提升为新的Master,然后将所有其他的Slave重新指向新的Master。整个故障转移过程对应用程序是完全透明的。MHA node运行在每台MySQL服务器上,它通过监控具备解析和清理logs功能的脚本来加快故障转移的。

Manager工具包情况如下:

  • masterha_check_ssh:检查MHA的SSH配置情况。
  • masterha_check_repl:检查MySQL复制状况。
  • masterha_manager:启动MHA。
  • masterha_check_status:检测当前MHA运行状态。
  • masterha_master_monitor:检测Master是否宕机。
  • masterha_master_switch:控制故障转移(自动或手动)。
  • masterha_conf_host:添加或删除配置的server信息。

Node工具包(通常由MHA Manager的脚本触发,无需人工操作)情况如下:l

  • save_binary_logs:保存和复制Master的binlog日志。
  • apply_diff_relay_logs:识别差异的中级日志时间并将其应用到其他Slave。
  • filter_mysqlbinlog:去除不必要的ROOLBACK事件(已经废弃)
  • purge_relay_logs:清除中继日志(不阻塞SQL线程)

1.3 MHA架构

本文所使用的MHA架构规划如下表:

IP主机名作用Server IDPort类型备注
192.168.68.131MHA-LHR-Master1-ip131master node5733061313306写入对外提供写服务
192.168.68.132MHA-LHR-Slave1-ip132slave node1 (Candicate Master)573306132备选Master提供读服务
192.168.68.133MHA-LHR-Slave2-ip133slave node2573306133提供读服务
192.168.68.134MHA-LHR-Monitor-ip134Monitor host监控其它机器,一旦Mater宕机,将会把备选Master提升为新的Master,而将Slave指向新的Master
192.168.68.135VIP在131和132之间进行浮动漂移
MySQL数据库版本:MySQL 5.7.30,MySQL节点端口都是3306,各自的server_id不一样

MHA切换前和切换后的架构图:

【DB宝19】在Docker中使用MySQL高可用之MHA

二、准备MHA环境

2.1 下载MHA镜像

一共4个镜像,3个MHA Node,一个MHA Manager,压缩包大概3G,下载完成后:

2.2 编辑yml文件,创建MHA相关容器

编辑yml文件,使用docker-compose来创建MHA相关容器,注意docker-compose.yml文件的格式,对空格、缩进、对齐都有严格要求:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

2.3 安装docker-compose软件(若已安装,可忽略)

2.4 创建MHA容器

2.5 初始化MHA环境

2.5.1 添加网卡

注意:请确保这4个节点的eth0都是192.168.68.0网段,否则后续的MHA切换可能会出问题。如果不一致,那么可以使用如下命令修改:

2.5.2 修改Manager节点的hosts文件

2.5.3 主库131添加VIP

添加完成后:

2.5.4 分别进入132和133启动复制进程

结果:

至此,我们就把MHA环境准备好了,接下来就开始测试MHA的各项功能。

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    16 + 2 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部