本节提供有关在线添加 NDB 集群节点的行为和当前限制的一般信息。
数据重新分配。 在线添加新节点的功能包括通过 ALTER TABLE ... REORGANIZE PARTITION
语句重新组织 NDBCLUSTER
表数据和索引的方法,以便通过所有数据节点(包括新节点)分配它们。支持内存中表和磁盘数据表的表重组。此重新分配当前不包括唯一索引(仅重新分配有序索引)。
对于在添加新数据节点之前已经存在的 NDBCLUSTER
表,不会自动进行重新分配,但可以使用 mysql 或其他 MySQL 客户端应用程序中的简单 SQL 语句来完成。但是,添加到创建新节点组后创建的表中的所有数据和索引都会自动分布在所有集群数据节点之间,包括作为新节点组一部分添加的节点。
部分启动。 可以在并非所有新数据节点都已启动的情况下添加新的节点组。也可以将新的节点组添加到降级的集群中,即仅部分启动或一个或多个数据节点未运行的集群。在后一种情况下,集群必须有足够的节点在运行才能正常工作,然后才能添加新的节点组。
对正在进行的操作的影响。 使用 NDB 集群数据的常规 DML 操作不会因创建或添加新的节点组或表重组而受到阻止。但是,无法在表重组的同时执行 DDL,也就是说,在 ALTER TABLE ... REORGANIZE PARTITION
语句执行期间不能发出任何其他 DDL 语句。此外,在执行 ALTER TABLE ... REORGANIZE PARTITION
(或执行任何其他 DDL 语句)期间,无法重新启动集群数据节点。
故障处理。 节点组创建和表重组期间数据节点的故障处理方式如下表所示
表 25.38 节点组创建和表重组期间的数据节点故障处理
故障期间 | “旧”数据节点中的故障 | “新”数据节点中的故障 | 系统故障 |
---|---|---|---|
节点组创建 |
|
|
|
表重组 |
|
|
|
删除节点组。 ndb_mgm 客户端支持 DROP NODEGROUP
命令,但仅当节点组中的任何数据节点都不包含任何数据时,才可删除该节点组。由于当前无法“清空”特定数据节点或节点组,因此此命令仅适用于以下两种情况
在 ndb_mgm 客户端中发出
CREATE NODEGROUP
之后,但在 mysql 客户端中发出任何ALTER TABLE ... REORGANIZE PARTITION
语句之前。使用
DROP TABLE
删除所有NDBCLUSTER
表之后。TRUNCATE TABLE
对此不起作用,因为数据节点会继续存储表定义。