### 18.1.2 组复制用例

[](<>)

组复制使您能够通过将系统状态复制到一组服务器来创建具有冗余的容错系统。即使某些服务器随后发生故障，只要不是全部或多数，系统仍然可用。根据发生故障的服务器的数量，该组可能会降低性能或可伸缩性，但它仍然可用。服务器故障是孤立的和独立的。它们由组成员服务跟踪，该服务依赖于分布式故障检测器，该检测器能够在任何服务器离开组时发出信号，无论是自愿还是由于意外停止。有一个分布式恢复过程可确保当服务器加入组时，它们会自动更新。无需服务器故障转移，多源更新无处不在的性质确保即使在单个服务器故障的情况下更新也不会被阻止。总而言之，MySQL Group Replication 保证了数据库服务是持续可用的。

重要的是要了解，尽管数据库服务可用，但在服务器意外退出的情况下，连接到它的客户端必须重定向或故障转移到不同的服务器。这不是 Group Replication 试图解决的问题。连接器、负载平衡器、路由器或某种形式的中间件更适合处理此问题。例如见[MySQL 路由器 8.0](https://dev.mysql.com/doc/mysql-router/8.0/en/).

总而言之，MySQL Group Replication 提供了一个高可用、高弹性、可靠的 MySQL 服务。

提示

要部署多个 MySQL 实例，您可以使用[InnoDB 集群](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-innodb-cluster.html)这使您能够轻松地管理一组 MySQL 服务器实例[MySQL 外壳](https://dev.mysql.com/doc/mysql-shell/8.0/en/).InnoDB Cluster 将 MySQL 组复制包装在一个编程环境中，使您能够轻松部署 MySQL 实例集群以实现高可用性。此外，InnoDB Cluster 与[MySQL 路由器](https://dev.mysql.com/doc/mysql-router/8.0/en/)，这使您的应用程序无需编写自己的故障转移过程即可连接到集群。但是，对于不需要高可用性的类似用例，您可以使用[InnoDB 副本集](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-innodb-replicaset.html).可以找到 MySQL Shell 的安装说明[这里](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html).

#### 示例用例

[](<>)

以下示例是组复制的典型用例。

-   *弹性复制*- 需要非常流畅的复制基础架构的环境，其中服务器的数量必须动态增长或缩减，并且副作用尽可能少。例如，云的数据库服务。

-   *高可用分片*- 分片是实现写入横向扩展的一种流行方法。使用 MySQL Group Replication 实现高可用性分片，其中每个分片映射到一个复制组。

-   *异步源副本复制的替代方案*- 在某些情况下，使用单个源服务器会使其成为单点争用。在某些情况下，写入整个组可能会证明更具可扩展性。

-   *自主系统*- 此外，您可以部署 MySQL 组复制纯粹是为了复制协议中内置的自动化（在本章和前面的章节中已经描述）。
