深入理解Mysql MHA高可用集群搭建:从实验到实战

news2024/11/27 3:55:55

1. 简介

MHA(Master High Availability)是一个高效的开源MySQL高可用性解决方案。由日本开发者yoshinorim(前DeNA员工,现在Facebook)创建,MHA支持MySQL的主从复制架构,自动化主节点故障转移。当主节点发生故障,MHA能迅速将最新数据的从节点升级为新主节点。这个过程中,MHA从其他从节点获取额外信息,确保数据一致性。MHA还能在线切换主节点,按需调整主从节点关系。它已被证明是一个成熟的MySQL高可用方案,能在30秒内完成故障切换,并最大限度地保证数据一致性。值得一提的是,淘宝也在开发一个类似的产品TMHA,目前支持一主一从架构。

2. MHA服务

MHA服务包括两种角色:MHA Manager(管理节点)和MHA Node(数据节点)。

  • MHA Manager:通常部署在一台独立的机器上,管理多个master/slave集群,每个集群称为一个application。它负责整个集群的管理和协调。
  • MHA Node:安装在每台MySQL服务器(无论是master、slave还是manager)上。它负责监控、解析日志和加快故障恢复的过程。

工具与功能

MHA提供了一系列工具,分布在Manager节点和Node节点上:

  • Manager节点工具
    • masterha_check_ssh:检测SSH环境。
    • masterha_check_repl:检测MySQL复制环境。
    • masterha_manager:MHA的主服务程序。
    • masterha_check_status:探测MHA运行状态。
    • masterha_master_monitor:监测MySQL主节点可用性。
    • masterha_master_switch:切换主节点的工具。
    • masterha_conf_host:添加或删除配置节点。
    • masterha_stop:关闭MHA服务的工具。
  • Node节点工具:(这些通常由Manager的脚本触发,无需手动操作)
    • save_binary_logs:保存并复制主节点的二进制日志。
    • apply_diff_relay_logs:识别并应用差异中继日志事件。
    • purge_relay_logs:清除中继日志。
  • 自定义扩展
    • secondary_check_script:通过多网络路由检测主节点可用性。
    • master_ip_failover_script:更新应用程序使用的master IP。
    • report_script:发送报告。
    • init_conf_load_script:加载初始配置参数。
    • master_ip_online_change_script:更新主节点IP地址。

工作原理

MHA的工作原理可以概括为以下几个步骤:

  1. 从故障的master节点保存二进制日志事件(binlog events)。
  2. 识别拥有最新更新的slave节点。
  3. 将差异的中继日志(relay log)应用到其他slave节点。
  4. 应用从master节点保存的二进制日志事件。
  5. 提升一个slave节点为新master。
  6. 使其他slave节点开始复制新master的数据。

3.MySQL Replication 环境的实验配置

3.1 准备实验 MySQL Replication 环境

3.1.1 相关配置

在本实验中,我们将设置一个包含四个节点的 MySQL Replication 环境,运行于 CentOS 7.3 系统。MHA (Master High Availability) 对 MySQL 复制环境有特定的配置需求,例如:

  • 所有节点必须开启二进制日志(bin-log)和中继日志(relay-log)。
  • 从节点(Slave)需设置为只读模式(read-only)。
  • 关闭中继日志自动清理功能(relay_log_purge)。

节点配置如下:

  • Manager (192.168.37.111): 作为控制器,负责监控和管理。
  • Master (192.168.37.122): 数据库主服务器。配置了 bin-log 和 relay-log,关闭了 relay_log_purge。
  • Slave1Slave2 (192.168.37.133 和 192.168.37.144): 数据库从服务器。与 Master 相同的日志配置。

为方便操作,我们在所有节点的 /etc/hosts 文件中添加了对应的域名解析配置。

3.1.2 主节点(Master)的初始配置

对于主节点 Master 的数据库配置,我们进行以下设置:

  • 设置 server-id 为 1,以保证集群中节点 ID 的唯一性。
  • 开启二进制日志(log-bin)和中继日志(relay-log)。
  • 关闭名称解析(skip_name_resolve,非必须)。

完成配置后,重启 MariaDB 服务以应用更改。

3.1.3 从节点(Slave)的配置

对于两个从节点 Slave,我们进行以下操作:

  • 设置唯一的 server-id(2 和 3)。
  • 开启中继日志(relay-log)和二进制日志(log-bin)。
  • 启用只读模式(read_only)和日志更新(log_slave_updates)。
  • 根据需要设置中继日志清理(relay_log_purge)。
  • 可选关闭名称解析(skip_name_resolve)。

每次配置更改后,重启 MariaDB 服务以应用设置。

3.1.4 配置一主多从复制架构

在 Master 节点上,我们配置了权限以允许 Slave 连接和复制。具体命令包括授予复制权限和显示 Master 状态。

在每个 Slave 节点上,我们设置了连接到 Master 的参数,启动了复制服务,并检查了复制状态。

以上步骤完成了 MySQL Replication 环境的基本配置。

3.2 安装配置MHA

3.2.1 在Master节点进行授权
  • 目标:在所有MySQL节点中授权一个具有管理权限的用户,以便在本地网络中远程访问其他节点。
  • 操作:在Master节点运行SQL语句授权。
    • 示例命令grant all on *.* to 'mhaadmin'@'192.168.%.%' identified by 'mhapass';
3.2.2 准备SSH互通环境
  • 目的:在MHA集群中,各节点需要通过SSH互信通信来实现远程控制和数据管理。
  • 步骤
    1. 在Manager节点生成密钥对。
    2. 设置Manager节点可以远程连接本地主机。
    3. 将私钥文件和authorized_keys文件复制给所有其他节点。
    4. 在所有节点上进行上述操作。
    5. 验证所有节点的SSH无密码互通。
3.2.3 安装MHA包
  • 操作:在Manager节点和其他节点上安装MHA包。
      • 所有节点:mha4mysql-node-0.56-0.el6.norch.rpm
      • Manager节点额外安装:mha4mysql-manager-0.56-0.el6.noarch.rpm
    • 安装方法:使用rz命令上传包,然后使用yum进行安装。
3.2.4 初始化MHA,进行配置
  • 配置文件:Manager节点为每个监控的master/slave集群提供专用配置文件。
  • 文件位置:全局配置文件位于/etc/masterha_default.cnf,或者通过application的配置提供。
3.2.5 定义MHA管理配置文件
  • 步骤:在MySQL主节点上为MHA创建管理用户,以便于后续使用。
  • 配置:创建/etc/mha_master目录并编写mha.cnf文件,配置包括管理用户、密码、工作目录等。
3.2.6 对四个节点进行检测
  • SSH互信通信检测:在Manager机器上运行命令检测SSH连接。
  • MySQL复制集群连接配置检测
    • 使用masterha_check_repl命令检查。
    • 如有错误,可能需在master节点上创建从节点账号。
    • 再次运行检测命令以验证配置。

总结

此文档详细介绍了MHA的安装配置过程,包括授权、SSH互通设置、MHA包安装、配置文件定义和系统检测。这些步骤确保了MHA集群的正确安装和高效运行。

3.3 启动 MHA

在 manager 节点上执行以下命令来启动 MHA:

nohup masterha_manager -conf=/etc/mha_master/mha.cnf &> /etc/mha_master/manager.log &

启动成功后,检查 master 节点的状态:

masterha_check_status -conf=/etc/mha_master/mha.cnf

如果服务正常运行,将显示 mha (pid:7598) is running(0:PING_OK)。要停止 MHA,使用:

masterha_stop -conf=/etc/mha_master/mha.cnf

3.4 测试 MHA 故障转移

  1. 模拟主节点崩溃:在 master 节点关闭 mariadb 服务。

    killall -9 mysqld mysqld_safe rm -rf /var/lib/mysql/*

  2. 查看 manager 节点日志

    tail -200 /etc/mha_master/manager.log

    日志显示 manager 检测到节点故障,并自动将 192.168.37.133 提升为主节点。

3.5 修复复制集群

  1. 准备新的 MySQL 节点:基于 master 节点的备份恢复数据,配置为新的 master 的从节点。
  2. 备份和数据恢复:在新的 master 节点进行备份,将数据恢复到新节点。
  3. 配置主从关系:设置新的主节点和从节点,检查主从状态。

3.6 再次检查操作

  1. 使用 masterha_check_repl 检查复制状态。
  2. 如果无误,重新启动 manager 并查看状态:

    masterha_manager -conf=/etc/mha_master/mha.cnf > /etc/mha_master/manager.log 2>&1 & masterha_check_status -conf=/etc/mha_master/mha.cnf

3.7 故障转换恢复注意事项

  1. 备份和手动提升:在从节点上做备份,并将主节点手动提升为从节点。
  2. 配置文件修改:自动转换后,可能需要手动修复主节点并修改配置文件。
  3. 重新运行检测命令:手动修复后,再次运行检测命令以确保恢复成功。

以上步骤详细介绍了如何启动和管理 MHA,以及在出现问题时的故障排查和修复流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1341973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EMC指令是什么?

摘要: EMC指令是欧盟颁布的一系列法规,旨在规范电子产品的电磁兼容性(Electromagnetic Compatibility,EMC)。这些指令要求产品在正常操作时不会产生电磁干扰,也不会对其他设备造成影响,同时能够抵御外部电磁…

什么是骨传导耳机?骨传导能保护听力吗?

骨传导耳机是一种非常特殊的蓝牙耳机,它通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机,它不通过空气传送声音,而是通过头骨的振动来传送声音。 并且骨传导耳机能够在一定程度上起到保护听力的作用,主要是因为它们不…

vite + javascript 创建纯 javascript项目

1、环境搭建:需要安装 node 管理器命令:安装了node的后,可以使用 npm ,也可以安装使用 cnpm / pnpm 下载 cnpm npm install -g cnpm --registryhttps://registry.npm.taobao.org 下载 pnpm npm i -g pnpm pnpm config set r…

ssm基于JavaWeb的校园心理健康网站的设计与实现论文

摘 要 如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

大创项目推荐 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习OCR中文识别系统 ** 该项目较为新颖,适合作为竞赛课题方向,…

提升FTP上传速度的方法(提升FTP下载速度的技巧)

在企业日常经营中,快速上传和下载文件至关重要。然而,在使用FTP(文件传输协议)进行文件传输时,速度可能成为瓶颈。为了提升工作效率,以下是一些建议,可以帮助企业提高FTP上传下载速度。 1、确保…

【赠书第14期】AI短视频制作一本通:文本生成视频+图片生成视频+视频生成视频

文章目录 前言 1 前期准备 2 拍摄与录制 3 后期编辑 4 技巧与注意事项 5 推荐图书 6 粉丝福利 前言 随着智能技术的迅猛发展,AI 短视频制作成为了一种新兴而创新的表达方式,广泛应用于社交媒体、广告营销、教育培训等领域。本文将介绍 AI 短视频…

VD6283TX环境光传感器(2)----移植闪烁频率代码

VD6283TX环境光传感器----2.移植闪烁频率代码 闪烁定义视频教学样品申请源码下载参考代码硬件准备开发板设置生成STM32CUBEMX串口配置IIC配置X-CUBE-ALSADC使用定时器触发采样KEIL配置FFT代码配置app_x-cube-als.c需要添加函数演示结果 闪烁定义 光学闪烁是指人造光源产生的光…

uniapp中uview组件库的Search 搜索 的用法

目录 基本使用 #设置输入框形状 #是否开启清除控件 #是否开启右边控件 #自定义样式 API #Props #Events 基本使用 通过placeholder参数设置占位内容通过v-model双向绑定一个变量值,设置初始化时搜索框的值,如果初始内容为空,那么请绑…

Thinkphp开发的返佣商城分销商城理财商城源码

(本站长在localhost安装测试,发现提示有错,具体问题没有时间查找了,或者php解密插件没有安装,有能力的朋友自行折腾。) 程序基于 THINKPHP6VUE 全新开发,保障安全的同时大大提高代码执行效率。…

基于梯度和频率域的深度超分辨率新方法笔记二

一、实现方法和网络结构的剖析 1.1 网络结构 梯度校准模块(GCM)和频率感知模块(FAM) 1)梯度校准模块(GCM) 1、使用梯度映射函数(如下图所示),将RGB和LR深度图映射到梯度域 2、再梯度域中使用RGB的梯度特…

彭涛:2023年终复盘,工作,团队,个人!

眨眼2023即将结束,2024即将开启,每年这个时候,都会简单总结下自己这一年,既是对今年的一个复盘和回顾,也是对新一年的向往和期待。 我的2023年,大概分为 「个人」,「家庭」,「团队」…

C语言——指针题目“指针探测器“

如果你觉得你指针学的自我感觉良好&#xff0c;甚至已经到达了炉火纯青的地步&#xff0c;不妨来试试这道题目&#xff1f; #include<stdio.h> int main() {char* c[] { "ENTER","NEW","POINT","FIRST" };char** cp[] { c 3…

【漏洞修复】页面包含错误信息,其中可能包含敏感信息,这些信息可以帮助攻击者对站点进一步的攻击

1、漏洞描述 2、测试数据包 3、tomcat修复 修改tomcat conf下的server.xml relaxedQueryChars"[]|{}^&#x5c;&#x60;&quot;<>"

初识隧道代理HTTP:理解基础概念的重要性

嗨&#xff0c;小伙伴们&#xff01;如果你对网络世界充满好奇&#xff0c;那么这篇文章就是为你准备的。我们将一起踏上一段奇妙的旅程&#xff0c;探索一个叫做“隧道代理HTTP”的新领域。但在这之前&#xff0c;我们需要先穿上“基础概念”的防护服&#xff0c;以免被这个复…

演员-评论家算法:多智能体强化学习核心框架

演员-评论家算法 演员-评论家算法&#xff1a;策略梯度算法 DQN 算法演员-评论家的协作流程演员&#xff1a;策略梯度算法计算智能体策略预期奖励的梯度公式分解时间流程拆解 通过采样方法近似估计梯度公式拆解时间流程拆解 改进策略设置基线&#xff1a;适用于减小方差、加速…

Vue监听浏览器自带的复制事件并对复制内容进行修改

场景&#xff1a; 在使用鼠标右键或者ctrl c的时候。光标会自动换行。粘贴出来的数据光标应该在红色部分&#xff0c;却出现在了黑色部分。 方法一&#xff1a; html标签不要换行&#xff1b;css去除空格&#xff1b; white-space: nowrap;方法二&#xff1a; 使用函数对复…

【数据结构和算法】独一无二的出现次数

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 哈希类算法题注意事项 2.2 方法一&#xff1a;判断长度 2.3 方法二&#xff1a; set 判断 2.4 方法…

MCEWMDRMNDBootstrap.dll文件丢失,软件游戏无法启动,怎样下载修复

不少小伙伴反馈&#xff0c;在打开某些游戏或软件的时候&#xff0c;Windows会提示“MCEWMDRMNDBootstrap.dll文件丢失&#xff0c;软件无法启动”&#xff0c;不知道应该怎样办&#xff1f; 首先&#xff0c;我们先来了解“MCEWMDRMNDBootstrap.dll文件”是什么&#xff1f; …

Sensor Demosaic IP 手册PG286笔记

《 UG1449 Multimedia User Guide》中包含了大量的多媒体IP简介。 本IP 用于对bayer RGB&#xff08;每个pixel只有单个R/G/B&#xff09;做去马赛克处理&#xff0c;恢复成每个pixel点都有完整的RGB值。通过axi接口配置IP内部erg。 1、算法手册中的描述 提到了几种插值算法&…