更改子群集设置
您可以使用 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)