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


MySQL 9.0 参考手册  /  ...  /  在线添加 NDB 集群数据节点:常见问题

25.6.7.1 在线添加 NDB 集群数据节点:常见问题

本节提供有关在线添加 NDB 集群节点的行为和当前限制的一般信息。

数据重新分配。 在线添加新节点的功能包括一种重新组织 NDBCLUSTER 表数据和索引的方法,以便通过 ALTER TABLE ... REORGANIZE PARTITION 语句将它们分布在所有数据节点(包括新节点)上。支持对内存中表和磁盘数据表进行表重组。此重新分配当前不包括唯一索引(仅重新分配有序索引)。

对于在添加新数据节点之前已存在的 NDBCLUSTER 表,重新分配不是自动的,但可以使用 mysql 或其他 MySQL 客户端应用程序中的简单 SQL 语句来完成。但是,在添加新节点组后创建的表中添加的所有数据和索引都会自动分布在所有集群数据节点(包括作为新节点组一部分添加的节点)之间。

部分启动。 可以在并非所有新数据节点都已启动的情况下添加新的节点组。也可以将新的节点组添加到降级的集群中,即仅部分启动或一个或多个数据节点未运行的集群中。在后一种情况下,集群必须有足够的节点正在运行才能正常运行,然后才能添加新的节点组。

对正在进行的操作的影响。 使用 NDB 集群数据的正常 DML 操作不会因创建或添加新的节点组或表重组而受到阻止。但是,无法与表重组同时执行 DDL,也就是说,在 ALTER TABLE ... REORGANIZE PARTITION 语句执行时,不能发出任何其他 DDL 语句。此外,在执行 ALTER TABLE ... REORGANIZE PARTITION(或执行任何其他 DDL 语句)期间,无法重新启动集群数据节点。

故障处理。 节点组创建和表重组期间数据节点的故障处理方式如下表所示

表 25.38 节点组创建和表重组期间的数据节点故障处理

故障发生期间 “旧”数据节点中的故障 “新”数据节点中的故障 系统故障
节点组创建
  • 如果主节点以外的节点发生故障: 节点组的创建始终会前滚。

  • 如果主节点发生故障:

    • 如果已达到内部提交点: 节点组的创建将前滚。

    • 如果尚未达到内部提交点。 节点组的创建将回滚

  • 如果主节点以外的节点发生故障: 节点组的创建始终会前滚。

  • 如果主节点发生故障:

    • 如果已达到内部提交点: 节点组的创建将前滚。

    • 如果尚未达到内部提交点。 节点组的创建将回滚

  • 如果 CREATE NODEGROUP 的执行已达到内部提交点: 重新启动时,集群将包含新的节点组。否则,它将不包含。

  • 如果 CREATE NODEGROUP 的执行尚未达到内部提交点: 重新启动时,集群不包含新的节点组。

表重组
  • 如果主节点以外的节点发生故障: 表重组始终会前滚。

  • 如果主节点发生故障:

    • 如果已达到内部提交点: 表重组将前滚。

    • 如果尚未达到内部提交点。 表重组将回滚。

  • 如果主节点以外的节点发生故障: 表重组始终会前滚。

  • 如果主节点发生故障:

    • 如果已达到内部提交点: 表重组将前滚。

    • 如果尚未达到内部提交点。 表重组将回滚。

  • 如果 ALTER TABLE ... REORGANIZE PARTITION 语句的执行已达到内部提交点: 当集群重新启动时,属于 table 的数据和索引将使用“新”数据节点进行分配。

  • 如果 ALTER TABLE ... REORGANIZE PARTITION 语句的执行尚未达到内部提交点: 当集群重新启动时,属于 table 的数据和索引将仅使用“旧”数据节点进行分配。


删除节点组。 ndb_mgm 客户端支持 DROP NODEGROUP 命令,但只有当节点组中没有数据节点包含任何数据时,才能删除该节点组。由于当前无法“清空”特定的数据节点或节点组,因此此命令仅适用于以下两种情况

  1. ndb_mgm 客户端中发出 CREATE NODEGROUP 之后,但在 mysql 客户端中发出任何 ALTER TABLE ... REORGANIZE PARTITION 语句之前。

  2. 使用 DROP TABLE 删除所有 NDBCLUSTER 表之后。

    TRUNCATE TABLE 对此不起作用,因为数据节点会继续存储表定义。