介绍几种 MySQL 官方高可用方案
前言:
MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。
1.MySQL Replication
MySQL Replication 是官方提供的主从同步方案,用于实现数据从一个 MySQL 实例(称为源或主服务器,Master)自动复制到一个或多个其他 MySQL 实例(称为副本或从服务器,Slave)。是目前应用最广的 MySQL 容灾方案,也是一切高可用方案的基础。
Replication 用两个或以上的实例搭建了 MySQL 主从复制集群,主节点处理写操作,从节点异步或半同步复制数据。虽然功能相对简单,但通过设置多个从节点可以实现读写分离和一定程度的故障转移。
主要特性:
- 异步复制:默认情况下,MySQL 使用异步复制,主服务器在写入数据后即认为操作完成,而不等待从服务器确认。
- 半同步复制:在半同步复制模式下,主服务器在提交事务时会等待至少一个从服务器确认接收到数据。
- 延迟复制:可以配置从服务器延迟一定时间接收主服务器的数据,用于防止误操作等场景。
适用场景:
- 读密集型应用:在需要高读取性能的场景下,读写分离架构可以有效提升性能。
- 数据备份和容灾:用作数据实时备份和故障恢复的场景。
- 业务分布:适合对高可用要求不高的业务,允许丢数据及同步延迟。
2.MySQL Group Replication
MySQL Group Replication 即组复制,简称为 MGR 。是 MySQL 5.7 版本之后引入的一种高可用性和高扩展性的解决方案,基于原生复制技术和 Paxos 协议实现。它提供了高一致性、高容错性、高扩展性和高灵活性。可以使用单主模式或双主模式,集群一般至少由三个节点组成。
主要特性:
- 多主复制:允许多个节点同时处理读写请求,从而提高系统的吞吐量和可靠性。
- 自动故障转移:当某个节点发生故障时,Group Replication 会自动重新配置集群,确保服务的连续性。
- 强一致性:使用分布式协议确保数据在所有节点之间的一致性,避免数据冲突和不一致。
- 冲突检测与解决:内置冲突检测机制,能够自动处理并解决数据冲突。
适用场景:
- 高可用性需求:适用于需要高可用性和数据强一致性的场景。
- 分布式系统:适用于需要分布式数据处理和高吞吐量的应用。
- 自动化管理:适用于希望通过自动化工具简化管理和运维的企业。
3.MySQL InnoDB Cluster
MySQL InnoDB Cluster 是 MySQL 官方提供的一种原生高可用性和高可扩展性解决方案。它通过使用 Group Replication 来实现数据的自动复制和高可用性。并结合 MySQL Shell 及 MySQL Router ,提供了更全面的高可用解决方案,包括自动安装、配置、管理和监控 MySQL 集群的能力。架构示意图如下:
InnoDB Cluster 集群内部基于 MySQL 组复制构建,提供自动成员管理,容错,自动故障转移动能等。利用 MySQL Shell 提供的 AdminAPI 功能来管理和配置 InnoDB Cluster。利用 MySQL Router 提供路由功能, 将客户端应用程序透明地连接到服务器实例,如果服务器实例发生意外故障,集群会自动重新配置。
主要特性:
- 自动故障转移:在主节点出现故障时,系统可以自动将读写请求切换到可用的从节点,确保服务的连续性。
- 强一致性:利用 Group Replication 确保所有节点的数据一致性。
- 读写分离:支持读写分离,提高系统的读性能。
- 简化管理:通过 MySQL Shell 和 AdminAPI 进行自动化管理,简化集群的部署和运维。
适用场景:
- 适用于需要高可用性、高一致性和高读性能的应用场景,推荐使用 MySQL 8.0 的高版本进行部署。
4.MySQL InnoDB ClusterSet
MySQL InnoDB ClusterSet 是在 InnoDB Cluster 基础上的扩展,旨在提供跨地域的高可用性和容灾能力。它集成多个 InnoDB Cluster,实现跨地域的数据复制和故障转移。
InnoDB ClusterSet 使用专用的 ClusterSet 复制通道自动管理从主集群到副本集群的复制。如果主集群由于数据中心损坏或网络连接丢失而变得无法使用,用户可以激活副本集群以恢复服务的可用性。
主要特性:
- 跨地域高可用:通过多个地理位置的集群实现跨地域的高可用性和容灾能力。
- 一致性协调:ClusterSet Manager 统一管理和协调多个集群间的数据一致性和故障转移。
- 异步复制:各个集群间的数据同步采用异步复制技术,确保数据在灾难情况下的快速恢复。
适用场景:
- 适用于需要跨地域部署和高可用的场景,如全球分布的业务系统、大型企业的多数据中心部署等。
5.MySQL InnoDB ReplicaSet
MySQL InnoDB ReplicaSet 是基于传统主从复制架构的高可用性方案,只是集成了 MySQL Shell 及 MySQL Router 进行配置及管理。InnoDB ReplicaSet 不提供 InnoDB Cluster 提供的所有功能,例如自动故障转移或多主模式。但是它确实支持以类似方式配置、添加和删除实例等功能。在主节点不可用的情况下,需要使用 AdminAPI 手动触发故障转移。
主要特性:
- 主从复制:基于异步复制技术,将数据从主节点复制到一个或多个从节点。
- 手动故障转移:在主节点故障时需要手动进行故障转移。
- 易于管理:架构相对简单,配置和管理较为方便。
适用场景:
- 适用于中小型企业的业务系统、开发和测试环境等不需要复杂高可用性和自动故障转移的场景。
6.几种方案对比
下面我们从几个不同维度来对比下这几种方案,以表格形式列出,更清晰明确。
这些方案各有特点,适用于不同的业务场景和需求。选择合适的高可用方案时,需要基于实际业务需求、技术实力、成本预算、数据一致性、写入性能、系统复杂度和运维成本等因素。
总结:
本篇文章介绍了 MySQL 官方提供的几种高可用方案,除此之外,还有其他借助中间件搭建的高可用方案,例如:MHA、MMM、及借助 Keepalived、ProxySQL、Orchestrator 等工具的其他高可用方案。总而言之,高可用方案虽多,选择时还是要基于实际业务需求出发,综合考虑多种因素。
相关文章:

介绍几种 MySQL 官方高可用方案
前言: MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。 1.MySQL Replication MySQL Replication 是官方提供的主从同…...

IMU坐标系与自定义坐标系转化
1.首先示例图为例: 虚线黑色角度为IMU的坐标系;实线为自定义坐标系; 矫正:(默认angleyaw为IMU采的数据角度) angleyaw_pt angleyaw-25;if(-180<angleyaw&&angleyaw<-155) // 角度跳变问…...

《STM32 HAL库》RCC 相关系列函数详尽解析—— HAL_RCC_OscConfig()
观前提示:函数完整代码在文末,本文梳理了函数HAL_RCC_OscConfig()的主要逻辑和实现方法f105时钟树详解图 HAL_RCC_OscConfig() 函数介绍: 此函数是一个用于初始化RCC(Reset and Clock Control)振荡器(Osc…...

手动将jar包导入本地Maven仓库
1、进入存放jar包的目录,可以先放进仓库底下 2、cmd回车 3、执行命令,看到BUILD SUCCESS就是成功了 -DgroupId、-DartifactId、-Dversion、-Dfile记得换成自己对应的 mvn install:install-file -DgroupIdcom.github.03 -DartifactIdonvif -Dversion1.0…...

煤安防爆手机为什么能在煤矿井下使用
煤安防爆手机之所以能在煤矿井下使用,是因为它们经过特殊设计,符合严格的防爆安全标准,能够防止电火花引发爆炸,同时具备防尘防水、抗冲击等特性,确保在恶劣的煤矿环境中稳定可靠地运行,为工作人员提供安全…...

科普小课堂|不同版本USB接口详细解析
USB接口凭借其广泛的兼容性和高性能,已成为连接多样外设的主要接口,囊括了日常的键盘、鼠标等输入设备以及其他更多的领域。不仅如此,USB还展现了高度灵活性,能够便捷地转换为其他总线接口,例如实现USB到以太网或USB到…...
Spring Boot中的JSON解析优化
Spring Boot中的JSON解析优化 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Spring Boot应用中如何优化JSON解析,以提升系统的性能…...

全彩屏负氧离子监测站
TH-FZ5在追求绿色生态、健康出行的今天,景区不仅仅是人们休闲游玩的好去处,更是人们体验大自然、感受清新空气的重要场所。为了进一步提升游客的游览体验,许多景区纷纷引入了全彩屏负氧离子监测站,这一创新举措不仅为景区增添了科…...
LeetCode 1207.独一无二的数
题目要求 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr [1,2,2,1,1,3] 输出:true 解释:在该…...

自然语言处理——英文文本预处理
高质量数据的重要性 数据的质量直接影响模型的性能和准确性。高质量的数据可以显著提升模型的学习效果,帮助模型更准确地识别模式、进行预测和决策。具体原因包括以下几点: 噪音减少:高质量的数据经过清理,减少了无关或错误信息…...

2024年二级建造师机电工程专业历年考试题库精选答案解析。
1.根据《标准施工招标文件》,关于施工合同变更权和变更程序的说法,正确的是()。 A.发包人可以直接向承包人发出变更意向书 B.承包人书面报告发包人后,可根据实际情况对工程进行变更 C.承包人根据合同约定࿰…...

Oracle 19C19.3 rac安装并RU升级到19.14
19C支持RU补丁安装。 下载好19.14的RU补丁 [rootrac1 soft]# ll total 9830404 -rw-r--r-- 1 grid oinstall 3059705302 Jun 18 15:26 LINUX.X64_193000_db_home.zip -rw-r--r-- 1 grid oinstall 2889184573 Jun 18 15:27 LINUX.X64_193000_grid_home.zip -rw-r--r-- 1 grid …...

1012:Joseph
网址如下: OpenJudge - 1012:Joseph 其中一个解法 只想到了一个快速找到下一位处决的人的方法,本质上还是遍历,暂时没想到更优的方法了 代码如下: #include<cstdio> int k;bool judge(int tt, int m, int r){if(tt k) …...
【高级篇】备份与恢复:守护数据的长城(十一)
引言 在上一章《性能优化》中,我们深入探讨了如何通过调整查询、优化索引和配置服务器参数等手段,提升MySQL的运行效率。然而,再高效的数据处理能力也无法抵御硬件故障、软件错误或人为失误带来的数据损失。因此,建立健全的备份与恢复机制是确保数据安全和业务连续性的关键…...

Docker构建多平台镜像
docker的多架构镜像构建 目前很多服务器都是基于arm架构的,而现在大多数的docker镜像都是基于x86架构的。一种情况就是同样的代码编译成业务包做成镜像需要部署在不同架构的服务器上,这个时候我们就可以使用docker的多平台构建了。 以下操作是在centos7.…...

群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)
介绍 石墨烯算法是一种新兴的优化算法,灵感来自于石墨烯的结构和特性。石墨烯是一种由碳原子构成的二维蜂窝状晶格结构,具有优异的机械、电学和热学性能。石墨烯算法通过模拟石墨烯原子之间的相互作用和迁移,来求解复杂的优化问题 基本概念…...

创纪录!沃飞长空完成新一轮融资,实力获资方认可
作为全球竞逐的战略性新兴产业,今年首次写入政府工作报告的“低空经济”热度正持续提升,在政策、产业等多个层面均有重大突破。行业的飞速发展也吸引了投资界的目光,越来越多资本正投向低空经济。 近期,国内领先的低空出行企业吉…...

1991java Web体检预约管理系统eclipse定制开发mysql数据库BS模式java编程jdbc
一、源码特点 JSP体检预约管理系统是一套完善的web设计系统,对理解JSP java 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用…...
如何优雅终止线程/线程池
如何优雅终止线程 分为两个阶段终止线程 1、interrupted(): 让线程从休眠状态转换到RUNNABLE 状态 2、线程终止的标志位:线程会在合适的时机检查这个标志位,如果发现符合终止条件,则自动退出 run() 方法 public class MonitorThread extends Thread {/…...

泰迪智能科技实验室产品-云计算资源管理平台介绍
云计算资源管理平台是一款集群应用程序管理平台,以Docker、Kubernetes为核心引擎的容器化应用部署、运行环境,对数据中心的物理服务器、网络、存储、虚拟服务器等基础架构资源进行集中统一的管理、分配、监控等。平台旨在围绕行业应用逐步由“虚拟化”向…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...