# 第22章 InnoDB ReplicaSet

[](<>)

本章介绍 MySQL InnoDB ReplicaSet，它结合了 MySQL 技术，使您能够部署和管理[第十七章，*复制*](replication.html).本内容是 InnoDB ReplicaSet 的高级概述，完整文档请参见[MySQL InnoDB 副本集](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-innodb-replicaset.html).

一个 InnoDB ReplicaSet 至少包含两个 MySQL Server 实例，它提供了您熟悉的所有 MySQL Replication 功能，例如读取横向扩展和数据安全性。InnoDB ReplicaSet 使用以下 MySQL 技术：

-   [MySQL 外壳](https://dev.mysql.com/doc/mysql-shell/8.0/en/)，它是 MySQL 的高级客户端和代码编辑器。

-   MySQL 服务器，以及[第十七章，*复制*](replication.html)，它使一组 MySQL 实例能够提供可用性和异步读取横向扩展。InnoDB ReplicaSet 提供了一种替代的、易于使用的编程方式来使用 Replication。

-   [MySQL 路由器](https://dev.mysql.com/doc/mysql-router/8.0/en/)，一个轻量级的中间件，在你的应用程序和 InnoDB ReplicaSet 之间提供透明的路由。

    InnoDB ReplicaSet 的接口类似于[MySQL InnoDB 集群](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-innodb-cluster.html)，您使用 MySQL Shell 作为 ReplicaSet 来处理 MySQL Server 实例，并且 MySQL Router 也以与 InnoDB Cluster 相同的方式紧密集成。

    基于 MySQL 复制，InnoDB ReplicaSet 有一个主实例，它复制到一个或多个辅助实例。InnoDB ReplicaSet 不提供 InnoDB Cluster 提供的所有功能，例如自动故障转移或多主模式。但是，它确实支持以类似方式配置、添加和删除实例等功能。您可以手动切换或故障转移到辅助实例，例如在发生故障时。您甚至可以采用现有的 Replication 部署，然后将其作为 InnoDB ReplicaSet 进行管理。

    您使用 InnoDB ReplicaSet 使用[管理API](https://dev.mysql.com/doc/mysql-shell/8.0/en/admin-api-overview.html)，作为 MySQL Shell 的一部分提供。AdminAPI 在 JavaScript 和 Python 中可用，非常适合脚本和 MySQL 部署的自动化，以实现高可用性和可扩展性。通过使用 MySQL Shell 的 AdminAPI，您可以避免手动配置许多实例的需要。相反，AdminAPI 为 MySQL 实例集提供了一个有效的现代接口，使您能够从一个中央工具配置、管理和监控您的部署。

    要开始使用 InnoDB ReplicaSet，您需要[下载](https://dev.mysql.com/downloads/shell/)和[安装](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html)MySQL 外壳。您需要一些带有 MySQL 服务器实例的主机[已安装](installing.html), 你也可以[安装](https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-installation.html)MySQL 路由器。

    InnoDB ReplicaSet 支持[MySQL克隆](clone-plugin.html)，这使您能够简单地配置实例。过去，要在新实例加入 MySQL 复制部署之前对其进行配置，您需要以某种方式手动将事务传输到加入实例。这可能涉及制作文件副本、手动复制它们等等。你可以简单地[添加一个实例](https://dev.mysql.com/doc/mysql-shell/8.0/en/adding-replicaset-instances.html#add-instance-replicaset)复制到副本集，它会自动配置。

    同样，InnoDB ReplicaSet 与[MySQL 路由器](https://dev.mysql.com/doc/mysql-router/8.0/en/)，您可以使用 AdminAPI 来[一起工作](https://dev.mysql.com/doc/mysql-shell/8.0/en/registered-routers.html)他们在一起。MySQL Router 可以基于 InnoDB ReplicaSet 自动配置自己，在一个名为[自举](https://dev.mysql.com/doc/mysql-shell/8.0/en/admin-api-bootstrapping-router.html)，这样您就无需手动配置路由。MySQL Router 然后透明地将客户端应用程序连接到 InnoDB ReplicaSet，为客户端连接提供路由和负载平衡。这种集成还使您能够管理使用 AdminAPI 针对 InnoDB ReplicaSet 引导的 MySQL 路由器的某些方面。InnoDB ReplicaSet 状态信息包括有关针对 ReplicaSet 引导的 MySQL 路由器的详细信息。操作使您能够[创建 MySQL 路由器用户](https://dev.mysql.com/doc/mysql-shell/8.0/en/configuring-router-user.html)在 ReplicaSet 级别，使用 MySQL 路由器引导对 ReplicaSet 等。

    有关这些技术的更多信息，请参阅描述中链接的用户文档。除了此用户文档之外，MySQL Shell JavaScript API 参考或 MySQL Shell Python API 参考中的所有 AdminAPI 方法的开发人员文档，可从[连接器和 API](https://dev.mysql.com/doc/index-connectors.html).
