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