Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Adding NDB Cluster Data Nodes Online: Basic procedure

25.6.7.2 在线添加 NDB 集群数据节点:基本步骤

在本节中,我们列出了添加新数据节点到 NDB 集群所需的基本步骤。这一过程适用于使用 ndbdndbmtd 可执行文件的数据节点进程。对于更详细的示例,请见 第 25.6.7.3 节,“在线添加 NDB 集群数据节点:详细示例”

假设您已经拥有运行的 NDB 集群,online 添加数据节点需要以下步骤:

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

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

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

    Important

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

  3. 对现有NDB集群数据节点进行滚动重启。通常不需要(或不太可能)使用--initial选项重新启动现有数据节点。

    如果您正在使用API节点,并且动态分配的ID与要将新数据节点分配到的任何节点ID匹配,您必须在重启任何数据节点进程之前重新启动所有API节点(包括SQL节点)。这使得任何API节点,以前未明确分配的节点ID释放该ID并获取新的ID。

  4. 对NDB集群中的任何SQL或API节点进行滚动重启。

  5. 启动新数据节点。

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

  6. 使用NDB集群管理客户端执行一个或多个CREATE NODEGROUP命令,以创建新节点组或节点组,其中包含新数据节点。

  7. 将集群的数据重新分布到所有数据节点上,包括新的节点。通常情况下,这可以通过在 mysql 客户端中执行以下语句来实现:ALTER TABLE ... ALGORITHM=INPLACE, REORGANIZE PARTITION。对于每个 NDBCLUSTER 表,需要执行该语句。

    注意:使用 MAX_ROWS 选项创建的表不能使用该语句;相反,可以使用 ALTER TABLE ... ALGORITHM=INPLACE MAX_ROWS=... 语句来重新组织这些表。同时,需要注意使用 MAX_ROWS 设置分区数量的方式已经被弃用,建议使用 PARTITION_BALANCE;详见第15.1.20.12节,“设置 NDB 注释选项”,了解更多信息。

    Note

    只有在添加新节点组时已经存在的表需要重新分布数据。创建于新节点组添加后创建的表数据将自动分布;然而,在新节点组添加前已经存在的表 tbl 中添加的数据直到该表被重新组织后才会使用新的节点。

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

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

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