• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在线添加NDB群集数据节点:一般问题

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

    重新分配数据。在线添加新节点的功能包括一种重组NDBCLUSTER表数据和索引的方法,以便通过该ALTER TABLE ... REORGANIZE PARTITION语句将它们分布在包括新数据节点在内的所有数据节点上。支持内存和磁盘数据表的表重组。该重新分配当前不包括唯一索引(仅重新分配有序索引)。

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

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

    对正在进行的操作的影响。创建或添加新节点组或表重组不会阻止使用NDB群集数据的正常DML操作。但是,不可能与表重组同时执行DDL,也就是说,在ALTER TABLE ... REORGANIZE PARTITION执行语句时不能发出其他DDL语句。另外,在执行ALTER TABLE ... REORGANIZE PARTITION(或执行任何其他DDL语句)期间,无法重新启动集群数据节点。

    故障处理。节点组创建和表重组期间数据节点的故障处理如下表所示:

    在节点组创建和表重组期间的数据节点故障处理

    期间失败“旧”数据节点出现故障“新建”数据节点失败系统错误
    节点组创建
    • 如果主节点以外的节点发生故障:节点组的创建始终前滚。
    • 如果主服务器发生故障:

      • 如果到达内部提交点:节点组的创建将前滚。
      • 如果尚未到达内部提交点。回退节点组的创建
    • 如果主节点以外的节点发生故障:节点组的创建始终前滚。
    • 如果主服务器发生故障:

      • 如果到达内部提交点:节点组的创建将前滚。
      • 如果尚未到达内部提交点。回退节点组的创建
    • 如果CREATE NODEGROUP的执行已到达内部提交点:重新启动时,集群将包括新的节点组。否则就没有。
    • 如果CREATE NODEGROUP的执行尚未到达内部提交点:重新启动时,集群不包括新的节点组。
    表重组
    • 如果除主节点以外的其他节点发生故障:表重组始终向前滚动。
    • 如果主服务器发生故障:

      • 如果达到内部提交点:表重组将前滚。
      • 如果尚未到达内部提交点。表重组将回滚。
    • 如果除主节点以外的其他节点发生故障:表重组始终向前滚动。
    • 如果主服务器发生故障:

      • 如果达到内部提交点:表重组将前滚。
      • 如果尚未到达内部提交点。表重组将回滚。
    • 如果ALTER TABLE ... REORGANIZE PARTITION语句的执行已到达内部提交点:重新启动群集时,将table使用“新”数据节点分发属于的数据和索引。
    • 如果ALTER TABLE ... REORGANIZE PARTITION语句的执行尚未到达内部提交点:重新启动群集时,table仅使用“旧”数据节点分发属于的数据和索引。

    删除节点组。所述ndb_mgm客户端支持一DROP NODEGROUP命令,但是也可以删除一个节点组仅当节点组中没有数据节点包含任何数据。由于当前没有办法“清空”特定的数据节点或节点组,因此此命令仅在以下两种情况下有效:

    1. 发行后CREATE NODEGROUPndb_mgm客户端,但在此之前发出任何ALTER TABLE ... REORGANIZE PARTITION语句中的MySQL的客户端。
    2. NDBCLUSTER使用删除所有表格后DROP TABLE

      TRUNCATE TABLE为此目的不起作用,因为数据节点继续存储表定义。