子群集

由于 Eon 模式将计算和存储分开,因此您可以在群集中创建子群集来隔离工作。例如,您可能希望将一些节点专用于加载数据,而将其他节点专用于执行查询。或者,您可能希望为专门的用户组(他们可能有不同的优先级)创建子群集。您还可以使用子群集将节点组织成组,以便轻松地扩展和收缩群集。

Eon 模式数据库中的每个节点都必须属于一个子群集。这一要求意味着您的数据库必须始终至少有一个子群集。当您创建新的 Eon 模式数据库时,Vertica 会创建一个名为 default_subcluster 的子群集,其中包含您在创建数据库时创建的节点。如果您将节点添加到数据库而不将它们分配给子群集,Vertica 会将它们添加到默认子群集。您可以选择将另一个子群集指定为默认子群集,或者将 default_subcluster 重命名为更具描述性的名称。有关详细信息,请参阅更改子群集设置

使用子群集进行工作隔离

数据库管理员通常关心工作负载管理。密集的分析查询可能会消耗如此多的资源,以至于它们会干扰其他重要的数据库任务(例如数据加载)。子群集通过将工作负载相互隔离来帮助您防止资源问题。

在 Eon 模式下,默认情况下,查询仅在包含启动程序节点的子群集中的节点上运行。例如,考虑下图中显示的两个子群集。如果您连接到节点 4,您的查询将在节点 4 到节点 9 上运行。

此图像显示两个子群集,一个子群集标记为“负载子群集”,包含节点 1 到节点 3。另一个子群集名为“查询子群集”,包含节点 4 到节点 8。

同样,在节点 1 上启动的查询仅在节点 1 到节点 3 上运行。

这种隔离使您可以配置数据库群集以防止工作负载相互干扰。您可以将子群集分配给特定任务,例如加载数据、执行深入分析和短时间运行的仪表板查询。您还可以为组织中的不同组创建子群集,这样他们的工作负载就不会相互干扰。您可以调整每个子群集的设置(例如资源池)以匹配其特定的工作负载。

子群集类型

有两种类型的子群集:主子群集和辅助子群集。

主子群集构成 Vertica 数据库的核心。它们负责规划公共存储中数据的维护。您的主子群集必须始终运行。如果所有主子群集都关闭,您的数据库也会关闭,因为如果没有主子群集,数据库就无法在公共存储中维护数据。

通常,您的数据库中只有一个主子群集。您可以选择拥有多个主子群集。额外的主子群集可以使您的数据库在主节点发生故障时更具弹性。但是,额外的主子群集会降低数据库的可扩展性。您通常不会从主子群集中动态添加或移除节点,也不会关闭它们来扩展数据库。在大多数情况下,一个主子群集就足够了。

辅助子群集专为动态扩展而设计:您可以根据分析需求添加和移除或启动和停止这些子群集。它们对于维护数据库数据不是必需的。因此,您可以轻松地添加、移除和扩展或收缩辅助子群集,而不会影响数据库正常运行的能力。

子群集中的节点从包含它们的子群集继承其主或辅助状态;主子群集包含主节点,辅助子群集包含辅助节点。

子群集类型和弹性扩展

主子群集和辅助子群集之间最重要的区别在于,它们对 Vertica 如何确定数据库是否为 K-Safe 和是否具有 仲裁的影响。当确定数据库中的所有分片是否都有订阅节点时,Vertica 仅考虑主子群集中的节点。当确定数据库中是否有一半以上的节点正在运行时,它也仅考虑主节点(也称为具有主节点的仲裁)。如果不满足上述任一条件,数据库将进入只读模式以防止数据损坏。有关 Vertica 如何维护数据完整性的详细信息,请参阅 Eon 模式数据库中的数据完整性和高可用性

当确定数据库是否具有分片覆盖率或节点仲裁时,Vertica 不考虑辅助节点。这一事实使得辅助子群集非常适合管理您计划动态扩展和减少的节点组。您可以停止或移除辅助节点的整个子群集,而无需强制数据库进入只读模式。

K-safe 数据库的最小子群集大小

K-safe 数据库中,子群集必须至少具有三个节点才能运行。每个子群集都尝试维护对数据库中所有分片的订阅。如果一个子群集的节点少于三个,则它无法保持冗余分片覆盖率,其中每个分片在子群集中至少有两个订户。如果没有冗余覆盖,子群集在丢失节点时将无法继续处理查询。如果您尝试在 K-safe 数据库中具有三个以下节点的子群集中重新平衡分片,Vertica 会返回错误。

另请参阅