MySQL 9.0 参考手册  /  InnoDB 集群

第 23 章 InnoDB 集群

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

重要

InnoDB 集群不支持 MySQL NDB 集群。 有关 MySQL NDB 集群的更多信息,请参阅 第 25 章,MySQL NDB 集群 9.0第 25.2.6 节,“使用 InnoDB 的 MySQL 服务器与 NDB 集群的比较”

一个 InnoDB 集群至少包含三个 MySQL 服务器实例,它提供高可用性和扩展功能。 InnoDB 集群使用以下 MySQL 技术

  • MySQL Shell,它是 MySQL 的高级客户端和代码编辑器。

  • MySQL 服务器和 组复制,它使一组 MySQL 实例能够提供高可用性。 InnoDB 集群提供了一种替代的、易于使用的编程方法来使用组复制。

  • MySQL Router,一个轻量级中间件,在您的应用程序和 InnoDB 集群之间提供透明路由。

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

图 23.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 集群通常以单主模式运行,其中包含一个主实例(读写)和多个辅助实例(只读)。 高级用户还可以利用 多主 模式,其中所有实例都是主实例。 您甚至可以在 InnoDB 集群在线时更改集群的拓扑结构,以确保尽可能高的可用性。

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

要开始使用 InnoDB 集群,您需要 下载安装 MySQL Shell。 您需要一些安装了 MySQL 服务器实例的主机 安装,您还可以 安装 MySQL Router。

InnoDB 集群支持 MySQL 克隆,这使您能够轻松配置实例。 过去,要在新实例加入一组 MySQL 实例之前对其进行配置,您需要以某种方式手动将事务传输到加入的实例。 这可能涉及制作文件副本、手动复制它们等等。 使用 InnoDB 集群,您可以简单地将 添加实例 到集群中,它会自动配置。

类似地,InnoDB 集群与 MySQL Router 紧密集成,您可以使用 AdminAPI 一起使用 它们。 MySQL Router 可以基于 InnoDB 集群自动配置自身,此过程称为 引导,这使您无需手动配置路由。 然后,MySQL Router 将客户端应用程序透明地连接到 InnoDB 集群,为客户端连接提供路由和负载平衡。 这种集成还使您能够使用 AdminAPI 管理针对 InnoDB 集群引导的 MySQL Router 的某些方面。 InnoDB 集群状态信息包括有关针对集群引导的 MySQL Router 的详细信息。 操作使您能够在集群级别创建 MySQL Router 用户,以便与针对集群引导的 MySQL Router 一起使用,等等。

有关这些技术的更多信息,请参阅说明中链接的用户文档。 除了此用户文档之外,还有所有 AdminAPI 方法的开发者文档,可在 MySQL Shell JavaScript API 参考或 MySQL Shell Python API 参考中找到,可从 连接器和 API 获取。