# 第 21 章 InnoDB 集群

本章介绍 MySQL InnoDB Cluster,它结合了 MySQL 技术,使您能够为 MySQL 部署和管理一个完整的集成高可用性解决方案。此内容是 InnoDB Cluster 的高级概述,有关完整文档,请参阅MySQL InnoDB 集群 (opens new window).

重要的

InnoDB Cluster 不提供对 MySQL NDB Cluster 的支持。有关 MySQL NDB 集群的更多信息,请参阅第 23 章,MySQL NDB 集群 8.0第 23.2.6 节,“使用 InnoDB 的 MySQL 服务器与 NDB 集群的比较”.

一个 InnoDB Cluster 至少由三个 MySQL 服务器实例组成,它提供了高可用性和扩展特性。InnoDB Cluster 使用以下 MySQL 技术:

  • MySQL 外壳 (opens new window),它是 MySQL 的高级客户端和代码编辑器。

  • MySQL 服务器,以及组复制,它使一组 MySQL 实例能够提供高可用性。InnoDB Cluster 提供了一种替代的、易于使用的编程方式来处理 Group Replication。

  • MySQL 路由器 (opens new window),一个轻量级的中间件,在您的应用程序和 InnoDB Cluster 之间提供透明路由。

    下图概述了这些技术如何协同工作:

图 21.1 InnoDB 集群概览

Three MySQL servers are grouped together as a high availability cluster. One of the servers is the read/write primary instance, and the other two are read-only secondary instances. Group Replication is used to replicate data from the primary instance to the secondary instances. MySQL Router connects client applications (in this example, a MySQL Connector) to the primary instance.

建立在 MySQL 之上组复制,提供自动成员管理、容错、自动故障转移等功能。InnoDB Cluster 通常以单主模式运行,具有一个主实例(读写)和多个辅助实例(只读)。高级用户还可以利用多主模式,其中所有实例都是主实例。您甚至可以在 InnoDB Cluster 在线时更改集群的拓扑,以确保尽可能高的可用性。

您使用 InnoDB Cluster 使用管理API (opens new window),作为 MySQL Shell 的一部分提供。AdminAPI 在 JavaScript 和 Python 中可用,非常适合脚本和 MySQL 部署的自动化,以实现高可用性和可扩展性。通过使用 MySQL Shell 的 AdminAPI,您可以避免手动配置许多实例的需要。相反,AdminAPI 为 MySQL 实例集提供了一个有效的现代接口,使您能够从一个中央工具配置、管理和监控您的部署。

要开始使用 InnoDB Cluster,您需要下载 (opens new window)安装 (opens new window)MySQL 外壳。您需要一些带有 MySQL 服务器实例的主机已安装, 你也可以安装 (opens new window)MySQL 路由器。

InnoDB 集群支持MySQL克隆,这使您能够简单地配置实例。过去,要在新实例加入一组 MySQL 实例之前配置它,您需要以某种方式手动将事务传输到加入实例。这可能涉及制作文件副本、手动复制它们等等。使用 InnoDB Cluster,您可以简单地添加一个实例 (opens new window)到集群并自动配置。

同样,InnoDB Cluster 与MySQL 路由器 (opens new window),您可以使用 AdminAPI 来一起工作 (opens new window)他们在一起。MySQL Router 可以基于 InnoDB Cluster 自动配置自己,在一个名为自举 (opens new window),这样您就无需手动配置路由。MySQL Router 然后透明地将客户端应用程序连接到 InnoDB Cluster,为客户端连接提供路由和负载平衡。这种集成还使您能够管理使用 AdminAPI 针对 InnoDB 集群引导的 MySQL 路由器的某些方面。InnoDB Cluster 状态信息包括有关针对集群引导的 MySQL 路由器的详细信息。操作使您能够创建 MySQL 路由器用户 (opens new window)在集群级别,使用针对集群引导的 MySQL 路由器,等等。

有关这些技术的更多信息,请参阅描述中链接的用户文档。除了此用户文档之外,MySQL Shell JavaScript API 参考或 MySQL Shell Python API 参考中的所有 AdminAPI 方法的开发人员文档,可从连接器和 API (opens new window).