文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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

在本节中,我们将列出在线将新数据节点添加到 NDB Cluster 所需的基本步骤。无论您是使用 ndbd 还是 ndbmtd 二进制文件作为数据节点进程,此流程都适用。有关更详细的示例,请参阅 第 25.6.7.3 节,“在线添加 NDB Cluster 数据节点:详细示例”

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

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

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

  2. 对所有 NDB Cluster 管理服务器进行滚动重启。

    重要

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

  3. 对所有现有的 NDB Cluster 数据节点进行滚动重启。使用 --initial 重启现有数据节点没有必要(通常也不理想)。

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

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

  5. 启动新的数据节点。

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

  6. 在 NDB Cluster 管理客户端中执行一个或多个 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 命令以将新的节点组添加到集群中。