Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Adding NDB Cluster Data Nodes Online: General Issues

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

本节提供了在线添加 NDB 集群节点的常规信息和当前限制。

数据重新分布。 在线添加新节点包括重新组织 NDBCLUSTER 表数据和索引,以便它们分布在所有数据节点上,包括新的节点,通过 ALTER TABLE ... REORGANIZE PARTITION 语句。内存表和磁盘数据表的重新组织都支持。这重新分布不包括唯一索引(只有有序索引被重新分布)。

对于 NDBCLUSTER 表,在添加新数据节点之前已经存在的重新分布不是自动的,但可以使用简单的 SQL 语句在 mysql 或其他 MySQL 客户端应用程序中实现。然而,在添加新节点组后创建的所有数据和索引都将自动分布在所有集群数据节点上,包括新添加的节点组。

部分启动。 可以在没有所有新数据节点启动的情况下添加新节点组。也可以在集群部分启动或某些数据节点未运行的情况下添加新节点组。在后一种情况下,集群必须至少有足够的节点运行以保持可用性,然后才能添加新节点组。

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

故障处理。 在节点组创建和表重新组织期间数据节点的故障处理如下表所示:

表 25.66 节点组创建和表重新组织期间数据节点故障处理

Failure during Failure in Old data node Failure in New data node System Failure
Node group creation
  • 如果其他节点(非主节点)失败: 节点组的创建总是向前推进。

  • 如果主节点失败:

    • 如果内部提交点已经达到: 节点组的创建总是向前推进。

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

  • 如果其他节点(非主节点)失败: 节点组的创建总是向前推进。

  • 如果主节点失败:

    • 如果内部提交点已经达到: 节点组的创建总是向前推进。

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

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

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

Table reorganization
  • 如果非主节点失败: 表重新组织总是向前推进。

  • 如果主节点失败:

    • 如果内部提交点已经达到: 表重新组织向前推进。

    • 如果内部提交点尚未达到。 表重新组织回退。

  • 如果非主节点失败: 表重新组织总是向前推进。

  • 如果主节点失败:

    • 如果内部提交点已经达到: 表重新组织向前推进。

    • 如果内部提交点尚未达到。 表重新组织回退。

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

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


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

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

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

    TRUNCATE TABLE 不适用于此目的,因为数据节点继续存储表定义。