MySQL 之 MHA 高可用架构详解
这个是在内部分享做的一个 Keynote 动画,用来演示 MHA 高可用架构及发生故障时的 Failover。动画如下:
数据库相关分享之 MySQL 的 MHA 架构详解
引言
MySQL 数据库在企业和应用中扮演着举足轻重的角色,其稳定性和可靠性对于业务的连续运行至关重要。然而,在分布式系统中,单点故障一直是一个需要解决的问题。为了解决 MySQL 主服务器单点故障的问题,MySQL High Availability(MHA)应运而生。本文将详细介绍 MHA 的工作原理、架构特点、部署步骤以及其在高可用解决方案中的优势。
MHA 简介
MHA 是一款专为 MySQL 数据库设计的高可用解决方案,它能够在主服务器故障时迅速将最新的从服务器提升为新的主服务器,从而保证服务的连续性和数据的一致性。MHA 的特点包括快速故障转移、数据一致性保证、无需修改现有 MySQL 设置、无需增加大量服务器以及无性能损耗等。
MHA 架构
MHA 架构主要由 MHA Manager 和 MHA Node 组成:
MHA Manager:负责监控 MySQL 集群中的主服务器,当检测到主服务器故障时,自动执行故障转移操作。MHA Manager 可以单独部署在一台独立的机器上,也可以部署在一台从节点上。
MHA Node:运行在每台 MySQL 服务器上,无论是主服务器还是从服务器,都称为 Node。Node 负责保存和复制主服务器的二进制日志、识别差异的中继日志事件并将其应用于其他从服务器等。
MHA 支持一主多从的架构,即一个主服务器对应多个从服务器。在这种架构中,MHA Manager 会定期探测集群中的主服务器,一旦主服务器发生故障,MHA Manager 将自动选择最新的从服务器提升为新的主服务器,并将所有其他从服务器重新指向新的主服务器。
MHA 工作原理
MHA 的工作原理可以分为以下几个步骤:
-
监控主节点状态:MHA Manager 通过定期检查主节点的健康状态来监控数据库集群,包括检查主节点是否正常运行、主从复制是否同步等。
-
故障检测:当 MHA Manager 检测到主节点发生故障(如主节点宕机或不可达)时,它会立即采取行动以确保数据库的高可用性。
-
自动主从切换:一旦主节点故障被确认,MHA Manager 会自动选择一个健康的从节点,将其提升为新的主节点,以继续提供数据库服务。
-
数据同步:在主从切换后,MHA Manager 会确保新的主节点和其他从节点之间的数据同步。它会协调数据复制过程,以确保所有节点都有最新的数据副本。
-
恢复主节点:一旦原主节点恢复正常,MHA Manager 会协助将其重新加入数据库集群,并根据需要重新配置节点角色,以恢复正常的主从架构。
MHA 部署步骤
部署 MHA 高可用架构主要包括以下几个步骤:
-
环境准备:关闭所有设备的防火墙和核心防护,确保网络互通。
-
配置 MySQL 主从复制:在主服务器和从服务器上配置 MySQL 主从复制,确保数据能够正常同步。
-
安装 MHA 组件:在所有 MySQL 服务器上安装 MHA Node 组件,在 MHA Manager 服务器上安装 MHA Manager 组件。
-
配置 SSH 免密登录:在 MHA Manager 服务器上配置 SSH 免密登录到所有 MySQL 服务器,以便执行故障转移操作。
-
配置 MHA:在 MHA Manager 服务器上配置 MHA,包括指定 MySQL 访问账号和密码、设置工作目录和日志文件路径等。
-
测试 MHA:通过模拟主服务器故障来测试 MHA 的故障转移功能,确保在实际发生故障时能够迅速恢复服务。
MHA 的优势
MHA 在 MySQL 高可用解决方案中具有以下优势:
-
快速故障转移:MHA 能够在几秒内完成故障转移操作,大大减少服务中断时间。
-
数据一致性保证:MHA 通过复制和应用中继日志事件来确保数据一致性,避免数据丢失或不一致问题。
-
易于部署和管理:MHA 提供了命令行工具和简单的配置文件,使得部署和管理变得简单快捷。
-
无需修改现有 MySQL 设置:MHA 无需对现有的 MySQL 设置进行任何更改,即可实现高可用功能。
-
支持多种存储引擎:MHA 适用于任何 MySQL 存储引擎,不会对现有应用造成任何影响。
结论
MHA 作为 MySQL 的高可用解决方案,具有快速故障转移、数据一致性保证、易于部署和管理等优势。在需要高可用性和数据完整性的业务场景中,MHA 是一个值得推荐的选择。通过部署 MHA 高可用架构,企业可以确保 MySQL 数据库的稳定运行,减少服务中断的风险,提升业务连续性和客户满意度。
相关文章:
MySQL 之 MHA 高可用架构详解
这个是在内部分享做的一个 Keynote 动画,用来演示 MHA 高可用架构及发生故障时的 Failover。动画如下: 数据库相关分享之 MySQL 的 MHA 架构详解 引言 MySQL 数据库在企业和应用中扮演着举足轻重的角色,其稳定性和可靠性对于业务的连续运行至…...
WangEditor自定义新元素,并解决自定义元素中换行无法消除样式的问题
一、背景概述 项目有自定义样式模板的需求,WangEditor没有。若直接把样式的html插入WangEditor中,无法解析,且会被自动过滤。因此,需要基于WangEditor提供的API进行二次开发。 例如,需要新增以下样式: 该…...
VBA Excel口算题
口算题函数 利用随机数写个20以内加减法口算题函数 Function Kousuan()Dim intOne As IntegerDim intTwo As IntegerDim strFlg As StringDim intFlg As IntegerDim strRtn As StringintFlg Application.WorksheetFunction.RandBetween(0, 1)strFlg "-"If intFlg…...
C++理解临时对象的来源
当程序员之间进行交谈时,他们经常把仅仅需要一小段时间的变量称为临时变量。例如在下面这段swap(交换)例程里: template<class T> void swap(T& object1, T& object2) { T temp object1; object1 object2; object2 temp; } 通常把t…...
C++协助完成返回值优化
一个返回对象的函数很难有较高的效率,因为传值返回会导致调用对象内的构造和析构函数(参见条款M19),这种调用是不能避免的。问题很简单:一个函数要么为了保证正确的行为而返回对象要么就不这么做。如果它返回了对象,就没有办法摆脱…...
2024年睿抗机器人开发者大赛(RAICOM)国赛题解
目录 RC-u1 大家一起查作弊 分数 15 RC-u2 谁进线下了?II 分数 20 RC-u3 势均力敌 分数 25 RC-u4 City 不 City 分数 30 RC-u5 贪心消消乐 分数 30 RC-u1 大家一起查作弊 分数 15 简单模拟题,对于多行读入使用while(getline(cin…...
声明式UI语法
一、ArkTS的基本组成 Entry // 装饰器 Component // 装饰器 struct Hello { // 自定义组件State myText: string World;build() { // UI描述Column() { // 系统组件Text(Hello ${this.myText}).fontSize(50)Divider()Button(Click me).onClick(() > { // 事件方法t…...
JDBC连接数和1521连接数之间的区别和联系(Java Database Connectivity)
JDBC(Java Database Connectivity)连接数和1521连接数之间的区别和联系如下: 区别 概念不同: JDBC连接数:指通过JDBC技术建立的数据库连接数。JDBC是Java中的一套API,用于连接和操作关系数据库。JDBC连接数…...
Leetcode - 136双周赛
目录 一,3238. 求出胜利玩家的数目 二,3239. 最少翻转次数使二进制矩阵回文 I 三,3240. 最少翻转次数使二进制矩阵回文 II 四,3241. 标记所有节点需要的时间 一,3238. 求出胜利玩家的数目 本题直接暴力求解&#x…...
SQLite ORDER BY 语句
SQLite ORDER BY 语句 SQLite 的 ORDER BY 语句用于对查询结果进行排序。排序可以是升序(ASC)或降序(DESC)。默认情况下,如果不指定排序方式,ORDER BY 会以升序对结果进行排序。 语法 SQLite ORDER BY 语…...
MTK Android12 系统中应用加载 .so 文件的问题分析
在本篇博客中,我将详细总结在 Android 12 系统上进行的几个实验,包括如何加载自定义 JAR 文件、如何解压和确认 .so 文件,以及如何验证系统报错提示。本文将介绍使用 PathClassLoader 和 DexClassLoader 动态加载类的实验,分析系统报错信息,并最终得出结论。 推荐:《Andr…...
bpmn简单使用(制作流程图)
1、先下载依赖,下面是我下载的版本 "bpmn-io/properties-panel": "^3.23.0", "bpmn-js": "^17.9.1", "bpmn-js-properties-panel": "^5.6.1", "camunda-bpmn-moddle": "^7.0.1",…...
【算法模板】算竞技巧:Python对拍数据生成
在计算机编程竞赛中,对拍(Testlib)是一种验证程序正确性的方法。它通常用于检查一个程序的输出是否与另一个程序的输出一致,以确保程序的正确性。 对拍程序 【算法模板】算竞技巧:对拍全解_算法竞赛对拍-CSDN博客 #i…...
计算机基本理论与程序运行原理概述
目录 计算机的基本表示方法 计算机的组成 程序运行的原理 指令执行的流水线 编译原理 个人理解 面试题总结 计算机的基本表示方法 计算机系统使用高、低电平来表示逻辑1和0。数据在计算机中的存储、传输和处理均以二进制形式进行。数据通过总线作为电信号进行传输&…...
SpringBoot中的server.context-path
目录 一、问题引入 二、代码片段展示 2.1.接口层 2.2.application.properties 三、问题分析 3.1.server.context-path 作用 3.2.正确展示 四、HTTP请求响应码简介 4.1.响应码参考来源 4.2.源码示例 4.2.1.源码总述 4.2.2.正常情况——2XX: generally "OK&…...
AI绘画绘画 Stable Diffusion ,从零开始轻松变现,AI绘画副业创收指南,一天一个AI帮你赚钱小技巧!
大家好,我是灵魂画师向阳 通过长达几个月的AI绘画Stable Diffusion 系统教程,相信大家已经对AI绘画有了一个大概的认知。最近就有很多粉丝总是问我,AI绘画学会后如何进行变现,或者是做副业呢? 那今天我就分享一些目前…...
阿里云镜像站,提供了各种第三方镜像地址
阿里云提供了各项镜像缓存地址,对于很多国外服务的地址,通过阿里云缓存的地址去下载,速度会非常快。 如下,打开阿里云官方网站: 进入“镜像站”,如下图所示: 有我们常用的 npm、maven、操作系统…...
stm32入门学习11-硬件I2C和MPU
(一)I2C硬件电路 stm32内部有I2C的硬件电路,我们可以使用stm32的标准库函数来实现I2C,这可以为我们减少对软件资源的占用 I2C硬件电路常用的标准库函数 void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct); /…...
如何在C++、PHP、GO中使用AI生成PPT API接口
在当今快节奏的商业环境中,演示文稿的制作不仅需要快速,还需要具有吸引力和专业性。AI生成PPT API 服务提供了一种创新的解决方案,能够根据用户提供的内容自动生成演示文稿,极大地提高了效率和质量。本文将详细介绍AI生成PPT的优势…...
力扣面试150 逆波兰表达式求值 栈 模拟栈
Problem: 150. 逆波兰表达式求值 👨🏫 参考题解 class Solution {//纯数组模拟栈实现(推荐) 3 ms 36 MBpublic static int evalRPN(String[] tokens) {int[] numStack new int[tokens.length / 2 1];int index 0;for (String s : tokens) {swit…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
