联机添加NDB群集数据节点:基本过程
在本节中,我们列出了将新数据节点添加到NDB群集所需的基本步骤。无论将ndbd二进制文件还是ndbmtd二进制文件用于数据节点进程,此过程均适用。有关更详细的示例,请参见“在线添加NDB群集数据节点:详细示例”。
假设您已经有一个正在运行的NDB群集,则在线添加数据节点需要执行以下步骤:
编辑集群配置
config.ini
文件,添加[ndbd]
与要添加的节点相对应的新部分。在群集使用多个管理服务器的情况下,需要对config.ini
管理服务器使用的所有文件进行这些更改。您必须小心,
config.ini
文件中添加的任何新数据节点的节点ID都不会与现有节点使用的节点ID重叠。如果您的API节点使用动态分配的节点ID,并且这些ID与您要用于新数据节点的节点ID匹配,则可以强制任何此类API节点“迁移”,如本过程后面所述。对所有NDB群集管理服务器执行滚动重启。
重要
必须使用
--reload
或--initial
选项重新启动所有管理服务器,以强制读取新配置。对所有现有的NDB Cluster数据节点执行滚动重启。
--initial
重新启动现有数据节点时,没有必要(甚至通常不希望使用)。如果您使用的API节点具有动态分配的ID,这些ID与您希望分配给新数据节点的任何节点ID匹配,则必须重新启动所有API节点(包括SQL节点),然后重新启动此步骤中的任何数据节点进程。这将导致具有先前未显式分配的节点ID的所有API节点放弃这些节点ID并获取新的节点ID。
- 对连接到NDB群集的所有SQL或API节点执行滚动重启。
启动新的数据节点。
新的数据节点可以以任何顺序启动。只要它们在所有现有数据节点的滚动重启完成之后且继续进行下一步之前启动,它们也可以同时启动。
CREATE NODEGROUP
在NDB群集管理客户端中执行一个或多个命令,以创建新的节点组或新的数据节点所属的节点组。在所有数据节点(包括新数据节点)之间重新分配集群的数据。通常,这是通过
ALTER TABLE ... ALGORITHM=INPLACE, REORGANIZE PARTITION
在mysql客户端中为每个NDBCLUSTER
表发出一个语句来完成的。例外:对于使用该
MAX_ROWS
选项创建的表,此语句不起作用;而是使用ALTER TABLE ... ALGORITHM=INPLACE MAX_ROWS=...
重组此类表。您还应该记住,MAX_ROWS
不赞成使用以这种方式设置分区数,而应该使用PARTITION_BALANCE
;有关更多信息,请参见“设置NDB_TABLE选项”。注意
仅需要在添加新节点组时已经存在的表中执行此操作。添加新节点组后创建的表中的数据将自动分发;但是,
tbl
在重新组织表之前,不会使用新节点分发添加到新节点之前已存在的任何给定表中添加的数据。ALTER TABLE ... REORGANIZE PARTITION ALGORITHM=INPLACE
重新组织分区,但不回收“旧”节点上释放的空间。您可以通过为每个NDBCLUSTER
表OPTIMIZE TABLE
在mysql客户端中发出一条语句来完成此操作。这适用于内存
NDB
表中可变宽度列所使用的空间。OPTIMIZE TABLE
内存表的固定宽度列不支持;磁盘数据表也不支持此功能。
您可以添加所需的所有节点,然后CREATE NODEGROUP
连续发出几个命令以将新的节点组添加到群集。