Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.2 NDB Cluster 概述  / 23.2.7 NDB Cluster 的已知限制  /  21.2.7.10 与多个 NDB Cluster 节点相关的限制

21.2.7.10 与多个 NDB Cluster 节点相关的限制

多个 SQL 节点。  以下是与使用多个 MySQL 服务器作为 NDB Cluster SQL 节点相关的问题,并且特定于 NDBCLUSTER存储引擎:

  • 未分发的存储程序。 NDB使用存储引擎 的表支持存储过程、存储函数、触发器和计划事件 ,但这些不会在充当集群 SQL 节点的 MySQL 服务器之间自动传播,必须在每个 SQL 节点上单独重新创建。请参阅 NDB Cluster 中的存储程序

  • 没有分布式表锁。 LOCK TABLES语句或 GET_LOCK()调用仅对发出锁的 SQL 节点有效 ;集群中没有其他 SQL 节点看到这个锁。对于任何将表锁定作为其操作的一部分的语句发出的锁都是如此。(有关示例,请参见下一项。)

    可以在 API 应用程序中实现表锁定NDBCLUSTER ,并确保所有应用程序都通过设置 LockModeLM_Read或 来启动LM_Exclusive。有关如何执行此操作的更多信息,请参阅 NDB Cluster API 指南NdbOperation::getLockHandle() 中的描述。

  • 更改表操作。  ALTER TABLE运行多个 MySQL 服务器(SQL 节点)时未完全锁定。(如前一项所述,NDB Cluster 不支持分布式表锁。)

多个管理节点。  使用多个管理服务器时:

  • 如果任何管理服务器在同一主机上运行,​​您必须在连接字符串中为节点提供明确的 ID,因为节点 ID 的自动分配无法跨同一主机上的多个管理服务器工作。如果每个管理服务器都驻留在不同的主机上,则不需要这样做。

  • 当管理服务器启动时,它首先检查同一 NDB Cluster 中的任何其他管理服务器,并在成功连接到其他管理服务器后使用其配置数据。这意味着管理服务器--reload--initial启动选项将被忽略,除非管理服务器是唯一运行的服务器。这也意味着,当执行具有多个管理节点的 NDB Cluster 的滚动重启时,如果(且仅当)管理服务器是在此 NDB Cluster 中运行的唯一管理服务器时,它会读取自己的配置文件。请参阅 第 21.6.5 节,“执行 NDB Cluster 的滚动重启”, 了解更多信息。

多个网络地址。  不支持每个数据节点有多个网络地址。使用这些可能会导致问题:如果数据节点发生故障,SQL 节点会等待确认数据节点已关闭但永远不会收到它,因为到该数据节点的另一条路由保持打开状态。这可以有效地使集群无法运行。

笔记

可以为单个数据节点使用多个网络硬件 接口(例如以太网卡),但这些必须绑定到相同的地址。[tcp]这也意味着文件中的每个连接 不可能使用多个 部分config.ini。有关更多信息,请参阅 第 21.4.3.10 节,“NDB Cluster TCP/IP 连接”