# 第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).