介绍几种 MySQL 官方高可用方案

news2024/10/6 22:22:31

前言:

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 集群的能力。架构示意图如下:

image.png

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 复制通道自动管理从主集群到副本集群的复制。如果主集群由于数据中心损坏或网络连接丢失而变得无法使用,用户可以激活副本集群以恢复服务的可用性。

image.png

主要特性

  • 跨地域高可用:通过多个地理位置的集群实现跨地域的高可用性和容灾能力。
  • 一致性协调:ClusterSet Manager 统一管理和协调多个集群间的数据一致性和故障转移。
  • 异步复制:各个集群间的数据同步采用异步复制技术,确保数据在灾难情况下的快速恢复。

适用场景

  • 适用于需要跨地域部署和高可用的场景,如全球分布的业务系统、大型企业的多数据中心部署等。
5.MySQL InnoDB ReplicaSet

MySQL InnoDB ReplicaSet 是基于传统主从复制架构的高可用性方案,只是集成了 MySQL Shell 及 MySQL Router 进行配置及管理。InnoDB ReplicaSet 不提供 InnoDB Cluster 提供的所有功能,例如自动故障转移或多主模式。但是它确实支持以类似方式配置、添加和删除实例等功能。在主节点不可用的情况下,需要使用 AdminAPI 手动触发故障转移。

主要特性

  • 主从复制:基于异步复制技术,将数据从主节点复制到一个或多个从节点。
  • 手动故障转移:在主节点故障时需要手动进行故障转移。
  • 易于管理:架构相对简单,配置和管理较为方便。

适用场景

  • 适用于中小型企业的业务系统、开发和测试环境等不需要复杂高可用性和自动故障转移的场景。
6.几种方案对比

下面我们从几个不同维度来对比下这几种方案,以表格形式列出,更清晰明确。

image.png

这些方案各有特点,适用于不同的业务场景和需求。选择合适的高可用方案时,需要基于实际业务需求、技术实力、成本预算、数据一致性、写入性能、系统复杂度和运维成本等因素。

总结:

本篇文章介绍了 MySQL 官方提供的几种高可用方案,除此之外,还有其他借助中间件搭建的高可用方案,例如:MHA、MMM、及借助 Keepalived、ProxySQL、Orchestrator 等工具的其他高可用方案。总而言之,高可用方案虽多,选择时还是要基于实际业务需求出发,综合考虑多种因素。

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

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

相关文章

Games101学习笔记 Lecture16 Ray Tracing 4 (Monte Carlo Path Tracing)

Lecture16 Ray Tracing 4 (Monte Carlo Path Tracing 一、蒙特卡洛积分 Monte Carlo Integration二、路径追踪 Path tracing1.Whitted-Style Ray Tracings Problems2.只考虑直接光照时3.考虑全局光照①考虑物体的反射光②俄罗斯轮盘赌 RR (得到正确shade函数&#x…

Spring Boot 文件上传和下载指南:从基础到进阶

文章目录 引言1. 环境配置2. 文件上传2.1 配置文件上传路径2.2 创建上传服务2.3 创建上传控制器 3. 文件下载3.1 创建下载服务3.2 创建下载控制器 4. 前端页面4.1 文件上传页面4.2 文件下载页面 5. 技术分析结论 🎉欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o …

Dns被莫名篡改的逆向分析定位(笔记)

引言:最近发现用户的多台机器上出现了Dns被莫名修改的问题,从系统事件上看并未能正常确定到是那个具体软件所为,现在的需求就是确定和定位哪个软件具体所为。 解决思路: 首先到IPv4设置页面对Dns进行设置:通过ProcExp…

@react-google-maps/api实现谷歌地图中添加多边围栏,并可编辑,编辑后可获得围栏各个点的经纬度

先上一张效果图 看看是不是大家想要的效果~ ❤️ 由于该功能微微复杂一点,为了让大家精准了解 我精简了一下地图代码 大家根据自己的需求将center值和paths,用setState做活就可以了 1.第一步要加入项目package.json中或者直接yarn install它…

假设性文档嵌入 HyDE:大模型 + 对比学习,从关键词相似度搜索到语义搜索

假设性文档嵌入 HyDE:大模型 对比学习,从关键词相似度搜索到语义搜索 提出背景流程图解法拆解类比1. 单一文档嵌入空间的搜索2. 指令跟随型语言模型(InstructLM)的引入3. 生成文档的嵌入编码 提出背景 论文:https://…

2024亚太杯中文赛数学建模B题【洪水灾害的数据分析与预测】思路详解

2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛 B题 洪水灾害的数据分析与预测 附件 train.csv 中提供了超过 100 万的洪水数据,其中包含洪水事件的 id、季风强度、地形排水、河流管理、森林砍伐、城市化、气候变化、大坝质量、淤积、农业实践、侵蚀、无效防灾、…

一文搞懂 java 线程池:ScheduledThreadPool 和 WorkStealingPool 原理

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

Google Gemini:大上下文窗口是杀手级功能吗?

在八个月前,一封泄露的谷歌电子邮件透露,谷歌正努力超越其人工智能竞争对手。谷歌不仅没有围绕其人工智能产品的护城河——换句话说,没有建立起商业优势——也没有可以改变现状的秘诀。就在他们努力解决这个问题的同时,他们也看到…

SpringSecurity中文文档(Servlet Password Storage)

存储机制(Storage Mechanisms) 每种支持的读取用户名和密码的机制都可以使用任何支持的存储机制: Simple Storage with In-Memory AuthenticationRelational Databases with JDBC AuthenticationCustom data stores with UserDetailsServic…

2024/07/04

1、梳理笔记(原创) 2、终端输入一个日期&#xff0c;判断是这一年的第几天 scanf("%d-%d-%d",&y,&m,&d); 闰年2月29天&#xff0c;平年2月28天 #include<stdio.h> int main(int argc, char const *argv[]) {int y0,m0,d0;printf("please ente…

KBL610-ASEMI无人机专用整流桥KBL610

编辑&#xff1a;ll KBL610-ASEMI无人机专用整流桥KBL610 型号&#xff1a;KBL610 品牌&#xff1a;ASEMI 封装&#xff1a;KBL-4 最大重复峰值反向电压&#xff1a;1000V 最大正向平均整流电流(Vdss)&#xff1a;6A 功率(Pd)&#xff1a;中小功率 芯片个数&#xff1a…

【每天学会一个渗透测试工具】SQLmap安装教程及使用

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 ✨SQLmap简介 Sqlmap是一款开源的渗透测试工具 &#x1f680;下载及安装 下载地址&#xff1a;http://sqlmap.org/ windo…

黑马点评DAY4|整体项目介绍、短信登录模块

项目整体介绍 项目功能介绍 项目结构 该项目前后端分离架构模式&#xff0c;后端部署在Tomcat服务器&#xff0c;前端部署在Niginx服务器上&#xff0c;这也是现在企业开发的标准做法。PC端首先向Niginx发起请求&#xff0c;得到页面的静态资源&#xff0c;页面再通过ajax向服…

【UE5.3】笔记7 控制Pawn移动

使用A、D键控制角色左右移动 打开我们的BP_Player蓝图类&#xff0c;选择事件图表&#xff0c;添加我们的控制事件 右键&#xff0c;搜索A keyboard&#xff0c;选择A,如下图&#xff0c;D也是 添加扭矩力 首先我们要把我们的player上的模拟物理选项打开&#xff0c;这样我们…

Windows系统安装MySQL8.0.38

MySQL 8.0 相对于 MySQL 5.7 来说有几个显著的区别和改进&#xff0c;以下是一些主要的区别&#xff1a; JSON 数据类型和函数改进&#xff1a; MySQL 8.0 引入了更多的 JSON 支持&#xff0c;包括 JSON 数据类型、JSON 函数和操作符。这使得存储和查询 JSON 数据更加方便和高效…

sql语句练习注意点

1、时间可以进行排序&#xff0c;也可以用聚合函数对时间求最大值max&#xff08;时间&#xff09; 例如下面的例子&#xff1a;取最晚入职的人&#xff0c;那就是将入职时间倒序排序&#xff0c;然后limit 1 表&#xff1a; 场景&#xff1a;查找最晚入职员工的所有信息 se…

MySQL-作业1

一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo 二、创建表 1、创建一个名称为db_system的数据库 2、在该数据库下创建两张表&#xff0c;具体要求如下&#xff1a; 员工表 user …

贵的智能猫砂盆值得买吗?包含百元、千元的高性价比品牌推荐!

对于养猫的上班族来说&#xff0c;智能猫砂盆真的是越早买越好&#xff0c;普通猫砂盆用这么久下来能把我们这些上班的都累死&#xff0c;每次一回到家就能闻到猫屎的臭味&#xff0c;一看就收获猫砂盆里满满当当的猫屎&#xff0c;在外面要上班&#xff0c;在家里也要给猫上班…

C语言数据类型和变量(三)

目录 1.赋值操作符 1&#xff09;连续赋值 2&#xff09;复合赋值符 2.单目操作符&#xff1a;、- -、&#xff08;正号&#xff09;、- &#xff08;负号&#xff09; 1&#xff09;和-- 2&#xff09; 和 - 3.强制类型转换 4.printf&#xff08;&#xff09;函数 1…

用for语句实现九九乘法表

① #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() {for (int i 1; i < 9; i){for (int j 1; j < i; j){printf("%d*%d%d\t", j, i, i * j);}printf("\n");}return 0; } ② #define _CRT_SECURE_NO_WARNINGS #include &…