文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  在线添加 NDB 集群数据节点:基本流程

25.6.7.2 在线添加 NDB 集群数据节点:基本流程

在本节中,我们列出了将新的数据节点添加到 NDB 集群所需的步骤。此流程适用于您使用 ndbdndbmtd 二进制文件作为数据节点进程。有关更详细的示例,请参见 第 25.6.7.3 节,“在线添加 NDB 集群数据节点:详细示例”.

假设您已经有一个正在运行的 NDB 集群,在线添加数据节点需要执行以下步骤:

  1. 编辑集群配置 config.ini 文件,添加与要添加的节点相对应的新 [ndbd] 部分。在集群使用多个管理服务器的情况下,需要对所有管理服务器使用的 config.ini 文件进行这些更改。

    您必须注意,在 config.ini 文件中添加的任何新的数据节点的节点 ID 不得与现有节点使用的节点 ID 重叠。如果您的 API 节点使用动态分配的节点 ID,并且这些 ID 与您想要用于新的数据节点的节点 ID 匹配,则可以强制这些 API 节点进行 迁移,如本流程后面所述。

  2. 对所有 NDB 集群管理服务器执行滚动重启。

    重要

    所有管理服务器必须使用 --reload--initial 选项重启,以强制读取新的配置。

  3. 对所有现有的 NDB 集群数据节点执行滚动重启。使用 --initial 重启现有的数据节点并不是必需的(通常也不建议这样做)。

    如果您使用的是具有动态分配的 ID 的 API 节点,并且这些 ID 与您要分配给新的数据节点的任何节点 ID 匹配,则必须在重启此步骤中的任何数据节点进程之前重启所有 API 节点(包括 SQL 节点)。这将导致任何先前未显式分配节点 ID 的 API 节点放弃这些节点 ID 并获取新的节点 ID。

  4. 对连接到 NDB 集群的任何 SQL 或 API 节点执行滚动重启。

  5. 启动新的数据节点。

    新的数据节点可以以任何顺序启动。它们也可以同时启动,只要它们是在所有现有数据节点的滚动重启完成后启动,并且在进行下一步之前启动即可。

  6. 在 NDB 集群管理客户端中执行一个或多个 CREATE NODEGROUP 命令以创建新的节点组,新的数据节点将属于这些节点组。

  7. 将集群的数据重新分布到所有数据节点,包括新的数据节点。通常,这是通过在 mysql 客户端中对每个 NDBCLUSTER 表发出 ALTER TABLE ... ALGORITHM=INPLACE, REORGANIZE PARTITION 语句来完成的。

    例外:对于使用 MAX_ROWS 选项创建的表,此语句不起作用;相反,请使用 ALTER TABLE ... ALGORITHM=INPLACE MAX_ROWS=... 重新组织这些表。您还应该牢记,使用 MAX_ROWS 以这种方式设置分区数量已弃用,您应该改用 PARTITION_BALANCE;有关更多信息,请参见 第 15.1.20.12 节,“设置 NDB 注释选项”.

    注意

    这只需要对新节点组添加时已经存在的表执行。在新节点组添加后创建的表中的数据将自动分布;但是,添加到在添加新节点之前存在的任何给定表 tbl 的数据不会使用新节点进行分布,直到该表重新组织为止。

  8. ALTER TABLE ... REORGANIZE PARTITION ALGORITHM=INPLACE 重新组织分区,但不会回收在 节点上释放的空间。您可以通过对每个 NDBCLUSTER 表发出 OPTIMIZE TABLE 语句来实现这一点,该语句可以在 mysql 客户端中使用。

    这适用于内存中 NDB 表的可变宽度列使用的空间。对于内存中表的固定宽度列,不支持 OPTIMIZE TABLE;它也不支持磁盘数据表。

您可以添加所需的所有节点,然后依次发出几个 CREATE NODEGROUP 命令以将新的节点组添加到集群中。