多个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群集中运行的唯一管理服务器,则管理服务器将读取其自己的配置文件。请参见 第22.5.5节“执行NDB群集的滚动重启”, 欲获得更多信息。
多个网络地址。 每个数据节点不支持多个网络地址。使用这些容易引起问题:在数据节点发生故障的情况下,SQL节点会等待确认该数据节点已关闭,但由于到该数据节点的另一条路由仍处于打开状态而从未收到它。这可以有效地使群集无法运行。