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

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: MySQL 官方提供了多种高可用部署方案,从最基础的主从复制到组复制再到 InnoDB Cluster 等等。本篇文章以 MySQL 8.0 版本为准,介绍下不同高可用方案架构原理及使用场景。

前言:

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 等工具的其他高可用方案。总而言之,高可用方案虽多,选择时还是要基于实际业务需求出发,综合考虑多种因素。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
302 3
Mysql高可用架构方案
|
14天前
|
监控 关系型数据库 MySQL
Aurora MySQL负载突增应对策略与优化方案
通过以上策略,企业可以有效应对 Aurora MySQL 的负载突增,确保数据库在高负载情况下依然保持高性能和稳定性。这些优化方案涵盖了从架构设计到具体配置和监控的各个方面,能够全面提升数据库的响应速度和处理能力。在实际应用中,应根据具体的业务需求和负载特征,灵活调整和应用这些优化策略。
45 22
|
15天前
|
Java 关系型数据库 MySQL
MySQL 分库分表方案
本文总结了数据库分库分表的相关概念和实践,针对单张表数据量过大及增长迅速的问题,介绍了垂直和水平切分的方式及其适用场景。文章分析了分库分表后可能面临的事务支持、多库结果集合并、跨库join等问题,并列举了几种常见的开源分库分表中间件。最后强调了不建议水平分库分表的原因,帮助读者在规划时规避潜在问题。
76 20
|
2月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
2月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
3月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
105 5
|
3月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
71 1
|
5月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
656 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
4月前
|
SQL 关系型数据库 MySQL
mysql集群方案
mysql集群方案
63 0
|
15天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决

相关产品

  • 云数据库 RDS MySQL 版