组复制允许您通过将系统状态复制到一组服务器来创建具有冗余性的容错系统。即使其中一些服务器随后发生故障,只要不是全部或大多数服务器发生故障,系统仍然可用。根据故障服务器的数量,组的性能或可扩展性可能会下降,但仍然可用。服务器故障是隔离且独立的。它们由组成员资格服务跟踪,该服务依赖于分布式故障检测器,该检测器能够在任何服务器离开组时发出信号,无论是自愿离开还是由于意外停止。有一个分布式恢复过程,以确保当服务器加入组时,它们会自动更新到最新状态。无需服务器故障转移,并且多源更新无处不在的特性确保了即使在单个服务器发生故障的情况下也不会阻塞更新。总而言之,MySQL 组复制保证了数据库服务的持续可用性。
重要的是要了解,尽管数据库服务可用,但在意外服务器退出时,必须将连接到该服务器的那些客户端重定向或故障转移到其他服务器。这不是组复制试图解决的问题。连接器、负载均衡器、路由器或某种形式的中间件更适合处理此问题。例如,请参阅 MySQL Router 8.4。
总而言之,MySQL 组复制提供了一个高可用性、高弹性、可靠的 MySQL 服务。
提示
要部署多个 MySQL 实例,可以使用 InnoDB 集群,它使您能够在 MySQL Shell 中轻松管理一组 MySQL 服务器实例。InnoDB 集群将 MySQL 组复制包装在一个编程环境中,使您能够轻松部署 MySQL 实例集群以实现高可用性。此外,InnoDB 集群与 MySQL Router 无缝衔接,这使您的应用程序能够连接到集群,而无需编写自己的故障转移过程。但是,对于不需要高可用性的类似用例,您可以使用 InnoDB 副本集。有关 MySQL Shell 的安装说明,请参见此处。