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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: 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 等工具的其他高可用方案。总而言之,高可用方案虽多,选择时还是要基于实际业务需求出发,综合考虑多种因素。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
运维 负载均衡 关系型数据库
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
|
1月前
|
Kubernetes 关系型数据库 MySQL
MySQL在Kubernetes上的高可用实现
【5月更文挑战第1天】
135 5
|
1月前
|
SQL 关系型数据库 MySQL
MySQL in 太慢的 3 种优化方案
MySQL中的`eq_range_index_dive_limit`参数默认值为200,影响了IN查询的执行方式。当IN列表项少于这个值时,MySQL会使用扫描索引树(精确成本计算),而多于此值则使用索引统计(快速但可能不准)来分析查询成本。大量IN值可能导致性能下降。解决方案包括:1) 分批查询;2) 使用UNION ALL创建内存临时表;3) 创建实体表存储IN值并进行JOIN操作。注意,实体表需及时清理并避免反复插入删除导致性能下降。
106 0
|
1月前
|
搜索推荐 关系型数据库 MySQL
MySQL插入汉字报错的解决方案
MySQL插入汉字报错的解决方案
20 0
|
1月前
|
缓存 关系型数据库 MySQL
【专栏】提升MySQL性能和高可用性的策略,包括索引优化、查询优化和事务管理
【4月更文挑战第27天】本文探讨了提升MySQL性能和高可用性的策略,包括索引优化、查询优化和事务管理。通过合理使用B-Tree和哈希索引,避免过度索引,以及优化查询语句和利用查询缓存,可以改善性能。事务管理中,应减小事务大小并及时提交,以保持系统效率。主从或双主复制可增强高可用性。综合运用这些方法,并根据实际需求调整,是优化MySQL的关键。
|
1月前
|
安全 关系型数据库 MySQL
CentOS 7系统加固详细方案SSH FTP MYSQL加固
CentOS 7系统加固详细方案SSH FTP MYSQL加固
|
1月前
|
监控 关系型数据库 MySQL
MySQL高可用集群之MySQL-MMM
MySQL高可用集群之MySQL-MMM
|
1月前
|
存储 SQL 分布式计算
搭建Mysql Cluster集群实现高可用
搭建Mysql Cluster集群实现高可用
50 0
|
3天前
|
存储 关系型数据库 MySQL
|
2天前
|
存储 关系型数据库 MySQL

相关产品

  • 云数据库 RDS MySQL 版