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