10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

23.5.7.1在线添加NDB集群数据节点:一般问题

介绍在线添加NDB集群节点的行为和当前限制的一般信息。

再分配的数据。在线添加新节点的能力包括重新组织的方法NDBCLUSTER表数据和索引,以便它们分布在所有数据节点上,包括新数据节点ALTER TABLE……重组分区声明。支持对内存表和磁盘数据表进行表重组。这种重新分配目前不包括惟一索引(只有有序索引被重新分配)。

的再分配NDBCLUSTER表在添加新数据节点之前已经存在,它不是自动的,但可以使用中的简单SQL语句来完成mysql或其他MySQL客户端应用程序。但是,在添加新节点组后创建的表中添加的所有数据和索引将自动分布到所有集群数据节点中,包括作为新节点组一部分添加的那些节点。

部分开始。可以在不启动所有新数据节点的情况下添加新节点组。还可以向降级的集群(即仅部分启动的集群,或一个或多个数据节点没有运行的集群)添加新的节点组。在后一种情况下,在添加新节点组之前,集群必须有足够多的节点在运行。

对正在进行的操作的影响。使用NDB Cluster数据的正常DML操作不会因创建或添加新节点组或表重组而受阻。但是,在表重组的同时执行DDL是不可能的——也就是说,当一个ALTER TABLE……重组分区语句被执行。此外,在执行过程中ALTER TABLE……重组分区(或任何其他DDL语句的执行),则不可能重新启动集群数据节点。

故障处理。数据节点在创建节点组和重组表过程中失败的处理如下表所示:

表23.65创建节点组和重组表时数据节点失败处理

失败在 失败数据节点 失败数据节点 系统故障
节点组的创建
  • 如果主节点以外的其他节点故障:节点组的创建总是前滚。

  • 如果master失败:

    • 如果内部提交点已经到达:前滚节点组的创建。

    • 如果尚未到达内部提交点。节点组的创建被回滚

  • 如果主节点以外的其他节点故障:节点组的创建总是前滚。

  • 如果master失败:

    • 如果内部提交点已经到达:前滚节点组的创建。

    • 如果尚未到达内部提交点。节点组的创建被回滚

  • 如果CREATE NODEGROUP的执行已经到达内部提交点:重新启动时,集群包含新的节点组。否则没有。

  • 如果CREATE NODEGROUP的执行还没有到达内部提交点:重新启动时,集群不包括新的节点组。

表重组
  • 如果主节点以外的其他节点故障:表重组总是前滚。

  • 如果master失败:

    • 如果内部提交点已经到达:表重组被前滚。

    • 如果尚未到达内部提交点。回滚表重组。

  • 如果主节点以外的其他节点故障:表重组总是前滚。

  • 如果master失败:

    • 如果内部提交点已经到达:表重组被前滚。

    • 如果尚未到达内部提交点。回滚表重组。

  • 如果执行ALTER TABLE…REORGANIZE PARTITION语句已经到达内部提交点:当集群重新启动时,数据和索引属于表格使用数据节点。

  • 如果执行ALTER TABLE…REORGANIZE PARTITION语句还没有到达内部提交点:当集群重新启动时,数据和索引属于表格仅使用数据节点。


删除节点组。ndb_mgm客户端支持删除节点组命令,但只有当节点组中的数据节点不包含任何数据时,才可以删除节点组。既然目前没有办法对于特定的数据节点或节点组,该命令只适用于以下两种情况:

  1. 发行后创建节点组ndb_mgm客户端,但在发出任何ALTER TABLE……重组分区语句的mysql客户端。

  2. 后放弃所有NDBCLUSTER表的使用删除表

    截断表不能用于此目的,因为数据节点继续存储表定义。