10bet网址
MySQL NDB集群8.0
相关的文档10bet官方网站 下载此节选

MySQL NDB集群8.0/.../ 在线添加NDB集群数据节点:一般问题

6.7.1在线添加NDB集群数据节点:通用问题

本节提供关于在线添加NDB集群节点的行为和当前限制的一般信息。

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

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

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

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

故障处理。数据节点在创建节点组和重组表过程中出现故障,处理方法如下表所示:

表6.14创建节点组和重组表过程中数据节点故障处理

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

  • 如果主机失败:

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

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

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

  • 如果主机失败:

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

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

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

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

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

  • 如果主机失败:

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

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

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

  • 如果主机失败:

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

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

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

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


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

  1. 发行后创建节点组ndb_mgm客户端,但在发出任何之前修改表…重组分区的声明mysql客户端。

  2. 在放弃一切之后NDBCLUSTER表的使用删除表

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