25.6.7.1 在线添加 NDB 集群数据节点:总体问题
本节提供了在线添加 NDB 集群节点的行为和当前限制的总体信息。
数据重新分布. NDBCLUSTER 表数据和索引可以在线添加新节点时重新分布,以便它们在所有数据节点上都可用,包括新的节点,通过使用 ALTER TABLE ... REORGANIZE PARTITION
语句。支持内存表和 Disk Data 表的重新组织。这项重新分布目前不包括唯一索引(只重分布有序索引)。
在添加新数据节点之前已经存在的 NDBCLUSTER 表的重新分布不是自动的,但可以使用简单的 SQL 语句在 mysql 或其他 MySQL 客户端应用程序中实现。然而,在创建了新的节点组后添加到表中的所有数据和索引都将自动分布于所有集群数据节点,包括作为新节点组的一部分添加的节点。
部分启动。 可以在所有新数据节点都没有启动的情况下添加新的节点组,也可以将新的节点组添加到一个已降级的集群中—that is,一个只部分启动或其中一个或多个数据节点未运行的集群。在后一种情况下,集群必须有足够的节点正在运行,以便在添加新节点组之前。
对 ongoing 操作的影响。 使用 NDB 集群数据的正常 DML 操作不会被创建或添加新的节点组所阻止,也不会被表重组织所阻止。然而,在执行 ALTER TABLE ... REORGANIZE PARTITION
语句时,不可能同时执行其他 DDL 语句。在执行 ALTER TABLE ... REORGANIZE PARTITION
(或任何其他 DDL 语句)时,也不可能重新启动集群数据节点。
故障处理。 节点组创建和表重组织期间的数据节点故障将被按照以下表格所示进行处理:
表 25.38 数据节点故障处理 durante 节点组创建和表重组织
Failure during | Failure in “Old” data node | Failure in “New” data node | System Failure |
---|---|---|---|
Node group creation |
|
|
|
Table reorganization |
|
|
|
删除节点组. ndb_mgm 客户端支持DROP NODEGROUP
命令,但是只能在没有数据节点包含任何数据时删除一个节点组。由于当前无法“empty”特定的数据节点或节点组,这个命令只适用于以下两个情况:
-
在
CREATE NODEGROUP
在ndb_mgm 客户端中执行,但是在mysql 客户端中执行任何ALTER TABLE ... REORGANIZE PARTITION
语句之前。 -
在使用
TRUNCATE TABLE
语句无法实现此目的,因为数据节点会继续存储表定义。