MySQL 外壳 8.0  /  第 7 章 MySQL InnoDB 集群

第 7 章 MySQL InnoDB 集群

MySQL InnoDB Cluster 为 MySQL 提供了完整的高可用性解决方案。通过使用 MySQL Shell中包含的 AdminAPI,您可以轻松地配置和管理一组至少三个 MySQL 服务器实例以充当 InnoDB 集群。

InnoDB Cluster 中的每个 MySQL 服务器实例都运行 MySQL Group Replication,它提供了在 InnoDB Cluster 中复制数据的机制,具有内置的故障转移功能。AdminAPI 消除了在 InnoDB 集群中直接使用 Group Replication 的需要,但有关更多信息,请参阅 解释详细信息的Group Replication。从 MySQL 8.0.27 开始,您还可以设置 InnoDB ClusterSet(请参阅 第 8 章,MySQL InnoDB ClusterSet),通过将主 InnoDB Cluster 与其在备用位置的一个或多个副本链接起来,为 InnoDB Cluster 部署提供容灾能力,例如不同的数据中心。

MySQL Router可以根据您部署的集群自动配置自己,将客户端应用程序透明地连接到服务器实例。如果服务器实例发生意外故障,集群会自动重新配置。在默认的单主模式下,InnoDB Cluster 有一个读写服务器实例——主实例。多个辅助服务器实例是主服务器的副本。如果主服务器发生故障,辅助服务器会自动提升为主服务器的角色。MySQL Router 检测到这一点并将客户端应用程序转发到新的主节点。高级用户还可以将集群配置为具有多个主节点。

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

图 7.1 InnoDB Cluster 概览

三个 MySQL 服务器组合在一起作为一个高可用性集群。 其中一台服务器是读/写主实例,另外两台是只读从实例。 Group Replication 用于将数据从主实例复制到辅助实例。 MySQL Router 将客户端应用程序(在本例中为 MySQL 连接器)连接到主实例。

重要的

InnoDB Cluster 不提供对 MySQL NDB Cluster 的支持。NDB Cluster 依赖于NDB存储引擎以及许多特定于 NDB Cluster 的程序,这些程序未随 MySQL Server 8.0 提供; NDB仅作为 MySQL NDB Cluster 发行版的一部分提供。此外,随 MySQL Server 8.0 提供的 MySQL 服务器二进制文件 ( mysqld ) 不能与 NDB Cluster 一起使用。有关 MySQL NDB Cluster 的更多信息,请参阅MySQL NDB Cluster 8.0使用 InnoDB 的 MySQL 服务器与 NDB Cluster 相比InnoDB,提供了有关存储引擎和NDB存储引擎 之间差异的信息 。