21.1.7.10 与多个 NDB 群集节点有关的限制

多个 SQL 节点. 以下是与将多个 MySQL 服务器用作 NDB 群集 SQL 节点有关的问题,这些问题特定于NDBCLUSTER存储引擎:

  • 没有分布式 table 锁. LOCK TABLES仅适用于发出该锁的 SQL 节点;群集中没有其他 SQL 节点“看到”此锁。对于任何将 table 作为其操作的一部分进行锁定的语句所发出的锁定,也是如此。 (有关示例,请参阅下一项.)

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

多个 Management 节点. 使用多个 Management 服务器时:

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

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

多个网络地址. 不支持每个数据节点多个网络地址。使用这些容易引起问题:如果数据节点发生故障,SQL 节点将 await 确认该数据节点已关闭,但由于到该数据节点的另一条路由仍处于打开状态而从未收到该数据节点。这可以有效地使集群无法运行。

Note

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