MySQL发展至今,在高可用性方面不断前进,从最初的异步复制、半同步复制、群组复制,演进到现在的InnoDB Cluster和InnoDB Replica Set。在这一篇里将说明各种高可用架构以及其适用的场景。
MySQL Replication
经典的主从复制,需要多个步骤手动进行配置。例如,用户管理,备份恢复,配置复制......。MySQL仅提供了核心功能,整体架构需要用户自己决定(大部分情况下需要定制)。在这种情况下,组织或者公司需要使用不同的技术组件,技术专家或DBA需要将大量的工作和时间投入到自动化处理。
MySQL InnoDB Cluster
2016年,MySQL推出了MySQL InnoDB Cluster,InnoDB Cluster主要包括MySQL Group Replication(群组成员变化管理、网络分区控制、集群范围一致性......),MySQL Shell(强有力的接口,自动化整合全部的组件),MySQL Router(应用透明路由、负载均衡、自动应用故障转移......)以及MySQL Clone(自动化部署成员,完全整合至InnoDB Cluster)。
MySQL InnoDB Replica Set
2020年,MySQL推出MySQL InnoDB Replica Set。该功能基于经典的主从复制,完全整合MySQL Shell 和 MySQL Router。
上面简要介绍了MySQL高可用的过去和现在的解决方案,下面将详细地介绍InnoDB Cluster和InnoDB Replica Set。
MySQL InnoDB Cluster是MySQL的一体化产品解决方案,具有高可用性和可伸缩性的特点,组件包括MySQL Server、MySQL Shell、MySQL Router和MySQL Group Replication。它的目标是提供一个MySQL一体化产品,全部的组件统一开发,整合全部的组件,并进行全栈测试。此外,简单易用也是该产品的特色,使用一个统一的客户端MySQL Shell统一进行集群编排和管理。
MySQL Group Replication是分布式高可用MySQL数据库,具有容错、自动故障转移、多节点更新、自动成员管理、冲突检测/解决以及防止数据丢失功能。它是复制数据库状态机理论的实现,能够保证整体写入顺序,保证一致性。集群范围内最终一致,如果使用8.0.14之后的MySQL可以实现会话和全局范围的读写强一致性。MySQL5.7版本将这个功能GA,并支持全部的MySQL平台,包括Linux、Windows、Solaris、macOS 、FreeBSD等。
MySQL Group Replication可以用于如下场景:
一致性:数据零丢失(RPO=0)
高可用性:自动故障转移
读取扩展:
主主环境:
MySQL Router
透明访问数据库的架构,在应用程序和后端的MySQL数据库之间提供透明的路由连接。
MySQL Shell
提供一个数据库管理接口,可以执行MySQL相关的全部任务。
MySQL Shell简单易用,可以通过它快速搭建InnoDB Cluster。
创建集群
配置实例
添加实例
启动MySQL Router
检查集群状态
MySQL InnoDB Replica Set
InnoDB Replica Set可以通过克隆自动部署新成员,利用MySQL Shell自动配置用户和复制,手动配置、增加移除应用程序使用的服务器,MySQL Router或其他代理,并且能够整合MySQL Router的负载均衡能力。从而避免了以往配置主从复制时所需的繁琐步骤。
以往需要使用额外的监控工具在每台服务器上去检查拓扑状态,用户需要负责全部组件的所有配置,每一个设置都相当于定制化。使用InnoDB Replica Set可以通过MySQL Shell status()来查看拓扑状态,并且Shell会基于最佳实践配置服务器、路由和复制,以防止发生错误。
InnoDB Replica Set是一套标准的解决方案,由MySQL团队提供支持和质量保证,这个方案的优点是简单易用,初学者也可以快速掌握。
放个视频演示了解一下:
最后说明一下如何选择不同的高可用架构。
首先要明确业务的需求,高可用性越高意味着成本也越高。可以从以下几个方面去明确目标:
不同业务需求对应的架构
单一地域
单一地域
单一地域
单一地域
多地域
多地域
以上是关于MySQL高可用性架构的内容,用户可以根据不同的需求选择适合自己的架构。
本文分享自 MySQL解决方案工程师 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!