在节点之间重新平衡数据

当您添加或移除节点时,Vertica 可以重新平衡您的数据库。作为超级用户,您可以使用管理工具 (Administration Tools)SQL 函数管理控制台手动触发重新平衡。

重新平衡操作可能需要一些时间,具体取决于群集大小、投影数量以及投影中包含的数据量。您不得中断此过程,而是允许其正常完成。如果必须取消此操作,请调用 CANCEL_REBALANCE_CLUSTER 函数。

为什么要重新平衡?

在执行以下操作之一后,重新平衡很有用甚至是必要的:

  • 通过添加或移除节点来更改群集的大小。

  • 在准备从群集移除一个或多个节点时,将其标记为临时节点。

  • 更改弹性群集的比例因子,该比例因子可确定用于跨数据库存储投影的存储容器的数目。

  • 设置控制节点大小或重新对齐大型群集布局上的控制节点。

  • 在初始 Vertica 群集配置中指定 120 个以上的节点。

  • 通过添加或移除节点来修改容错组

常规重新平衡任务

当您重新平衡数据库群集时,Vertica 对所有投影(无论是分段的还是未分段的)执行以下任务:

  • 基于下列内容分配数据:

  • 忽略投影定义中特定于节点的分布规范。在重新平衡节点时始终会将数据分布在所有节点上。

  • 重新平衡完成后,将 Ancient History Mark 设置为允许的最大时期(现在)。

Vertica 对于分段和未分段的投影采用不同的重新平衡方式,如下所述。

重新平衡分段投影

对于每个分段投影,Vertica 执行以下任务:

  1. 复制和重命名投影同伴并将它们均匀地分布在所有节点上。重命名的投影共享同一投影基本名。

  2. 刷新为新的投影。

  3. 删除原始投影。

重新平衡未分段的投影

对于每个未分段的投影,Vertica 执行以下任务:

如果添加节点:

  • 会在节点上创建投影同伴。

  • 会将新投影映射到它们在数据库编录中的共享名称。

如果删除节点:会从节点中删除其投影同伴。

K-safety 和重新平衡

在重新平衡完成之前,Vertica 会使用现有 K-safe 值进行操作。重新平衡完成后,Vertica 将使用在重新平衡操作期间指定的 K-safe 值进行操作。新的 K-safe 值必须等于或高于当前的 K-safety。Vertica 不支持 K-safety 降级,如果您尝试减小其当前值,则会返回一条警告。有关详细信息,请参阅降低 K‑Safety 以启用节点移除

重新平衡故障和投影

如果在重新平衡数据库时发生故障,您可以再次执行重新平衡操作。解决故障原因后,重新平衡操作会从发生故障之处继续进行。但是,数据重新平衡故障会导致投影变为过时。

要查找过期的投影,请查询系统表 PROJECTIONS,如下所示:

=> SELECT projection_name, anchor_table_name, is_up_to_date FROM projections
   WHERE is_up_to_date = false;

要移除过时的投影,请使用 DROP PROJECTION

临时表

节点重新平衡对临时表的投影没有影响。

有关重新平衡的详细信息

请参阅知识库文章: