当您添加或移除节点时,Vertica 可以重新平衡您的数据库。作为超级用户,您可以使用管理工具 (Administration Tools)、SQL 函数或管理控制台手动触发重新平衡。
重新平衡操作可能需要一些时间,具体取决于群集大小、投影数量以及投影中包含的数据量。您不得中断此过程,而是允许其正常完成。如果必须取消此操作,请调用
CANCEL_REBALANCE_CLUSTER
函数。
为什么要重新平衡?
在执行以下操作之一后,重新平衡很有用甚至是必要的:
-
通过添加或移除节点来更改群集的大小。
-
在准备从群集移除一个或多个节点时,将其标记为临时节点。
-
更改弹性群集的比例因子,该比例因子可确定用于跨数据库存储投影的存储容器的数目。
-
设置控制节点大小或重新对齐大型群集布局上的控制节点。
-
在初始 Vertica 群集配置中指定 120 个以上的节点。
-
通过添加或移除节点来修改容错组。
常规重新平衡任务
当您重新平衡数据库群集时,Vertica 对所有投影(无论是分段的还是未分段的)执行以下任务:
-
基于下列内容分配数据:
-
忽略投影定义中特定于节点的分布规范。在重新平衡节点时始终会将数据分布在所有节点上。
-
重新平衡完成后,将 Ancient History Mark 设置为允许的最大时期(现在)。
Vertica 对于分段和未分段的投影采用不同的重新平衡方式,如下所述。
重新平衡分段投影
对于每个分段投影,Vertica 执行以下任务:
-
复制和重命名投影同伴并将它们均匀地分布在所有节点上。重命名的投影共享同一投影基本名。
-
刷新为新的投影。
-
删除原始投影。
重新平衡未分段的投影
对于每个未分段的投影,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
。
临时表
节点重新平衡对临时表的投影没有影响。
有关重新平衡的详细信息
请参阅知识库文章: