Altering Subcluster Settings
There are several settings you can alter on a subcluster using the ALTER SUBCLUSTER statement. You can also switch a subcluster from a primary to a secondary subcluster, or from a secondary to a primary.
Renaming a Subcluster
To rename an existing subcluster, use the ALTER SUBCLUSTER statement's RENAME TO clause:
=> ALTER SUBCLUSTER default_subcluster RENAME TO load_subcluster; ALTER SUBCLUSTER => SELECT DISTINCT subcluster_name FROM subclusters; subcluster_name ------------------- load_subcluster analytics_cluster (2 rows)
Changing the Default Subcluster
The default subcluster designates which subcluster Vertica adds nodes to if you do not explicitly specify a subcluster when adding nodes to the database. When you create a new database (or when a database is upgraded from a version prior to 9.3.0) the default_subcluster is the default. You can find the current default subcluster by querying the is_default column of the SUBCLUSTERS system table.
The following example demonstrates finding the default subcluster, and then changing it to the subcluster named 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)
Converting a Subcluster from Primary to Secondary, or Secondary to Primary
You usually choose whether a subcluster is primary or secondary when creating it (see Creating Subclusters for more information). However, you can switch a subcluster between the two settings after you have created it. You may want to change whether a subcluster is primary or secondary to impact the K-Safety of your database. For example, if you have a single primary subcluster that has down nodes that you cannot easily replace, you can promote a secondary subcluster to primary to ensure losing another primary node will not cause your database to shut down. On the oither hand, you may choose to convert a primary subcluster to a secondary before eventually shutting it down. This conversion can prevent the database from losing K-Safety if the subcluster you are shutting down contains half or more of the total number of primary nodes in the database.
You cannot promote or demote a subcluster containing the initiator node. You must be connected to a node in a subcluster other than the one you want to promote or demote.
To make a secondary subcluster into a primary subcluster, use the PROMOTE_SUBCLUSTER_TO_PRIMARY function:
=> 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)
Making a primary subcluster into a secondary subcluster is similar. Unlike converting a secondary subcluster to a primary, there are several issues that may prevent you from making a primary into a secondary. Vertica prevents you from making a primary into a secondary if any of the following is true:
- The subcluster contains a critical node.
- The subcluster is the only primary subcluster in the database. You must have at least one primary subcluster.
- The initiator node is a member of the subcluster you are trying to demote. You must call DEMOTE_SUBCLUSTER_TO_SECONDARY from another subcluster.
To convert a primary subcluster to secondary, use the DEMOTE_SUBCLUSTER_TO_SECONDARY function:
=> 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)