创建子群集
默认情况下,新的 Eon 模式数据库包含一个名为 default_subcluster 的主子群集。此子群集包含创建数据库时属于数据库的所有节点。您经常需要创建子群集来分离和管理工作负载。在数据库中创建新的子群集有三种方法:
使用 admintools 创建子群集
要创建新的子群集,请使用 admintools db_add_subcluster
工具:
$ admintools -t db_add_subcluster --help
Usage: db_add_subcluster [options]
Options:
-h, --help show this help message and exit
-d DB, --database=DB Name of database to be modified
-s HOSTS, --hosts=HOSTS
Comma separated list of hosts to add to the subcluster
-p DBPASSWORD, --password=DBPASSWORD
Database password in single quotes
-c SCNAME, --subcluster=SCNAME
Name of the new subcluster for the new node
--is-primary Create primary subcluster
--is-secondary Create secondary subcluster
--control-set-size=CONTROLSETSIZE
Set the number of nodes that will run spread within
the subcluster
--like=CLONESUBCLUSTER
Name of an existing subcluster from which to clone
properties for the new subcluster
--timeout=NONINTERACTIVE_TIMEOUT
set a timeout (in seconds) to wait for actions to
complete ('never') will wait forever (implicitly sets
-i)
-i, --noprompts do not stop and wait for user input(default false).
Setting this implies a timeout of 20 min.
这个最简单的命令会添加一个空子群集。它需要数据库名称、密码和新子群集的名称。此示例会将名为 analytics_cluster 的子群集添加到名为 verticadb 的数据库中:
$ adminTools -t db_add_subcluster -d verticadb -p 'password' -c analytics_cluster
Creating new subcluster 'analytics_cluster'
Subcluster added to verticadb successfully.
默认情况下,admintools 会将新子群集创建为
辅助子群集。您可以通过提供 --is-primary
实参让该工具创建一个
主子群集。
在创建子群集时添加节点
您还可以为 admintools 指定一个或多个主机以作为新节点添加到子群集中。这些主机必须是群集的一部分,但还不是数据库的一部分。例如,您可以使用通过 MC 或 admintools 添加到群集的主机,或者在您从数据库中删除节点后仍保留在群集中的主机。此示例会创建一个名为 analytics_cluster 的子群集,并使用 -s
选项指定群集中的可用主机:
$ adminTools -t db_add_subcluster -c analytics_cluster -d verticadb -p 'password' -s 10.0.33.77,10.0.33.181,10.0.33.85
使用加入 V_CATALOG.NODES 和 V_CATALOG.NODE_SUBSCRIPTIONS 系统表的以下查询查看数据库中所有节点的订阅状态:
=> SELECT subcluster_name, n.node_name, shard_name, subscription_state FROM
v_catalog.nodes n LEFT JOIN v_catalog.node_subscriptions ns ON (n.node_name
= ns.node_name) ORDER BY 1,2,3;
subcluster_name | node_name | shard_name | subscription_state
-------------------+----------------------+-------------+--------------------
analytics_cluster | v_verticadb_node0004 | replica | ACTIVE
analytics_cluster | v_verticadb_node0004 | segment0001 | ACTIVE
analytics_cluster | v_verticadb_node0004 | segment0003 | ACTIVE
analytics_cluster | v_verticadb_node0005 | replica | ACTIVE
analytics_cluster | v_verticadb_node0005 | segment0001 | ACTIVE
analytics_cluster | v_verticadb_node0005 | segment0002 | ACTIVE
analytics_cluster | v_verticadb_node0006 | replica | ACTIVE
analytics_cluster | v_verticadb_node0006 | segment0002 | ACTIVE
analytics_cluster | v_verticadb_node0006 | segment0003 | ACTIVE
default_subcluster | v_verticadb_node0001 | replica | ACTIVE
default_subcluster | v_verticadb_node0001 | segment0001 | ACTIVE
default_subcluster | v_verticadb_node0001 | segment0003 | ACTIVE
default_subcluster | v_verticadb_node0002 | replica | ACTIVE
default_subcluster | v_verticadb_node0002 | segment0001 | ACTIVE
default_subcluster | v_verticadb_node0002 | segment0002 | ACTIVE
default_subcluster | v_verticadb_node0003 | replica | ACTIVE
default_subcluster | v_verticadb_node0003 | segment0002 | ACTIVE
default_subcluster | v_verticadb_node0003 | segment0003 | ACTIVE
(18 rows)
如果您在创建子群集时不包括主机,则必须在以后添加节点时手动重新平衡子群集中的分片。有关详细信息,请参阅添加节点后更新分片订阅。
子群集和大型群集
Vertica 具有一项名为大型群集的功能,可帮助在数据库群集增长时管理广播消息。它对添加新子群集会产生多种影响:
-
如果创建具有 16 个或更多节点的新子群集,Vertica 会自动启用大型群集功能。它会将 控制节点的数量设置为子群集中节点数量的平方根。请参阅计划大型群集。
-
您可以使用 admintools 命令行中的
--control-set-size
选项来设置子群集中控制节点的数量。 -
如果数据库群集有 120 个控制节点,则在您尝试添加新子群集时 Vertica 会返回错误。每个子群集必须至少有一个控制节点。数据库包含的控制节点不能超过 120 个。当数据库达到此限值时,必须减少其他子群集中的控制节点数,然后才能添加新的子群集。有关详细信息,请参阅更改控制节点的数量并重新对齐。
-
如果您尝试创建控制节点数超过 120 个控制节点限值的子群集,Vertica 会向您发出警告并创建具有更少控制节点的子群集。它会向子群集添加尽可能多的控制节点,即 120 减去群集中的当前控制节点数。例如,假设您在已经有 118 个控制节点的数据库群集中创建了一个 16 节点的子群集。在这种情况下,Vertica 会向您发出警告,并仅使用 2 个控制节点而非默认的 4 个控制节点来创建子群集。
有关大型群集功能的详细信息,请参阅大型群集。