更改子群集设置

您可以使用 ALTER SUBCLUSTER 语句在子群集上更改多个设置。您还可以将子群集从主子群集切换到辅助子群集,或者从辅助子群集切换到主子群集。

重命名子群集

要重命名现有子群集,请使用 ALTER SUBCLUSTER 语句的 RENAME TO 子句:

=> ALTER SUBCLUSTER default_subcluster RENAME TO load_subcluster;
ALTER SUBCLUSTER

=> SELECT DISTINCT subcluster_name FROM subclusters;
  subcluster_name
-------------------
 load_subcluster
 analytics_cluster
(2 rows)

更改默认子群集

如果您在将节点添加到数据库时未明确指定子群集,则默认子群集会指定 Vertica 要将节点添加到的子群集。创建新数据库时(或从 9.3.0 之前的版本升级数据库时),default_subcluster 是默认值。您可以通过查询 SUBCLUSTERS 系统表的 is_default 列找到当前的默认子群集。

以下示例演示如何查找默认子群集,然后将其更改为名为 analytics_cluster 的子群集:

=> SELECT DISTINCT subcluster_name FROM SUBCLUSTERS WHERE is_default = true;
  subcluster_name
--------------------
 default_subcluster
(1 row)

=> ALTER SUBCLUSTER analytics_cluster SET DEFAULT;
ALTER SUBCLUSTER
=> SELECT DISTINCT subcluster_name FROM SUBCLUSTERS WHERE is_default = true;
  subcluster_name
-------------------
 analytics_cluster
(1 row)

将子群集从主子群集转换为辅助子群集,或者从辅助子群集转换为主子群集

您通常会在创建子群集时选择子群集是 主子群集还是 辅助子群集(请参阅创建子群集以了解详细信息)。但在创建子群集后,您可以在这两个设置之间切换。您可能希望更改子群集是主子群集还是辅助子群集,来影响数据库的 K-Safety。例如,如果您有一个主子群集,其中包含无法轻松替换的关闭节点,则可以将辅助子群集提升为主子群集,以确保丢失另一个主节点不会导致数据库关闭。另一方面,您可以选择在最终关闭之前将主子群集转换为辅助子群集。如果您要关闭的子群集包含数据库中主节点总数的一半或以上,则此转换可以防止数据库丢失 K-Safety。

要将辅助子群集设为主子群集,请使用 PROMOTE_SUBCLUSTER_TO_PRIMARY 函数:

=> SELECT DISTINCT subcluster_name, is_primary from subclusters;
  subcluster_name  | is_primary
-------------------+------------
 analytics_cluster | f
 load_subcluster   | t
(2 rows)


=> SELECT PROMOTE_SUBCLUSTER_TO_PRIMARY('analytics_cluster');
 PROMOTE_SUBCLUSTER_TO_PRIMARY
-------------------------------
 PROMOTE SUBCLUSTER TO PRIMARY
(1 row)


=> SELECT DISTINCT subcluster_name, is_primary from subclusters;
  subcluster_name  | is_primary
-------------------+------------
 analytics_cluster | t
 load_subcluster   | t
(2 rows)

将主子群集设为辅助子群集的方法与此类似。与将辅助子群集转换为主子群集不同,有几个问题可能会阻止您将主子群集设为辅助子群集。如果以下任一情况属实,Vertica 会阻止您将主子群集设为辅助子群集:

  • 子群集包含一个 关键节点

  • 子群集是数据库中唯一的主子群集。您必须至少有一个主子群集。

  • 启动程序节点是指您尝试降级的子群集的成员。您必须从另一个子群集调用 DEMOTE_SUBCLUSTER_TO_SECONDARY。

要将主子群集转换为辅助子群集,请使用 DEMOTE_SUBCLUSTER_TO_SECONDARY 函数:

=> SELECT DISTINCT subcluster_name, is_primary from subclusters;
  subcluster_name  | is_primary
-------------------+------------
 analytics_cluster | t
 load_subcluster   | t
(2 rows)

=> SELECT DEMOTE_SUBCLUSTER_TO_SECONDARY('analytics_cluster');
 DEMOTE_SUBCLUSTER_TO_SECONDARY
--------------------------------
 DEMOTE SUBCLUSTER TO SECONDARY
(1 row)

=> SELECT DISTINCT subcluster_name, is_primary from subclusters;
  subcluster_name  | is_primary
-------------------+------------
 analytics_cluster | f
 load_subcluster   | t
(2 rows)