文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  与多个 NDB Cluster 节点相关的限制

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

多个 SQL 节点。  以下是关于使用多个 MySQL 服务器作为 NDB Cluster SQL 节点的问题,这些问题是针对 NDBCLUSTER 存储引擎的。

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

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

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

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

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

  • 如果任何管理服务器都运行在同一主机上,则必须在连接字符串中为节点指定显式 ID,因为节点 ID 的自动分配不适用于同一主机上的多个管理服务器。 如果每个管理服务器都位于不同的主机上,则不需要这样做。

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

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

注意

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