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