与多个NDB群集节点有关的限制
多个SQL节点。以下是与将多个MySQL服务器用作NDB Cluster SQL节点有关的问题,这些问题特定于NDBCLUSTER
存储引擎:
- 没有分布式表锁。 A
LOCK TABLES
仅适用于发出锁定的SQL节点;群集中没有其他SQL节点“看到”此锁。对于任何将表作为其操作的一部分进行锁定的语句所发出的锁定,也是如此。(有关示例,请参阅下一项。) - ALTER TABLE操作。
ALTER TABLE
运行多个MySQL服务器(SQL节点)时未完全锁定。(如前一项所述,NDB群集不支持分布式表锁。)
多个管理节点。使用多个管理服务器时:
- 如果任何管理服务器都在同一主机上运行,则必须在连接字符串中为节点提供显式ID,因为节点ID的自动分配不适用于同一主机上的多个管理服务器。如果每个管理服务器都位于不同的主机上,则不需要这样做。
- 当管理服务器启动时,它首先检查同一NDB群集中是否有其他管理服务器,并且在成功连接到其他管理服务器后,将使用其配置数据。这意味着除非管理服务器是唯一运行的服务器,否则将忽略管理服务器
--reload
和--initial
启动选项。这也意味着,当对具有多个管理节点的NDB群集执行滚动重启时,如果(并且仅当)管理服务器是在此NDB群集中运行的唯一管理服务器,则管理服务器将读取其自己的配置文件。请参见“执行NDB群集的滚动重启”,了解更多信息。
多个网络地址。每个数据节点不支持多个网络地址。使用这些容易引起问题:在数据节点发生故障的情况下,SQL节点会等待确认该数据节点已关闭,但由于到该数据节点的另一条路由仍处于打开状态而从未收到它。这可以有效地使群集无法运行。
注意可以将多个网络硬件接口(例如以太网卡)用于单个数据节点,但是这些接口必须绑定到同一地址。这也意味着文件中
[tcp]
每个连接最多只能使用一个部分config.ini
。有关更多信息,请参见“ NDB群集TCP / IP连接”。