1 - ALTER_LOCATION_SIZE

仅限 Eon 模式

调整子群集中一个节点或所有节点或者数据库中所有节点的 存储库大小。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

不可变

语法

ALTER_LOCATION_SIZE( 'location', '[target]', 'size')

参数

location
指定要调整大小的位置,为以下之一:
  • depot:调整节点当前存储库的大小。

  • 存储库在 Linux 文件系统中的绝对路径。如果更改多个节点上的存储库大小并指定路径,则所有受影响节点上的路径必须相同。默认情况下,并非如此,因为节点的名称通常是此路径。例如,verticadb 数据库中节点 1 的默认存储库路径为 /vertica/data/verticadb/v_verticadb_node0001_depot

目标值
要更改存储库的一个或多个节点,为以下之一:
  • 节点名称:调整指定节点的大小。

  • 子群集名称:调整指定子群集中所有节点的存储库大小。

  • 空字符串:调整数据库中所有存储库的大小。

size

仅当存储位置使用类型设置为 DEPOT 时才有效,指定存储库可以从存储位置的文件系统中分配的最大磁盘空间量。

您可以通过两种方式指定 size

  • integer%:存储位置的磁盘大小所占的百分比。

  • integer{K|M|G|T}:以千字节、兆字节、千兆字节或太字节为单位的存储位置的磁盘大小。

特权

超级用户

示例

将所有节点的存储库大小增加到文件系统的 80%:

=> SELECT node_name, location_label, location_path, max_size, disk_percent FROM storage_locations WHERE location_usage = 'DEPOT' ORDER BY node_name;
    node_name     | location_label  |      location_path      |  max_size   | disk_percent
------------------+-----------------+-------------------------+-------------+--------------
 v_vmart_node0001 | auto-data-depot | /home/dbadmin/verticadb | 36060108800 | 70%
 v_vmart_node0002 | auto-data-depot | /home/dbadmin/verticadb | 36059377664 | 70%
 v_vmart_node0003 | auto-data-depot | /home/dbadmin/verticadb | 36060108800 | 70%
(3 rows)

=> SELECT alter_location_size('depot', '','80%');
 alter_location_size
---------------------
 depotSize changed.
(1 row)

=> SELECT node_name, location_label, location_path, max_size, disk_percent FROM storage_locations WHERE location_usage = 'DEPOT' ORDER BY node_name;
    node_name     | location_label  |      location_path      |  max_size   | disk_percent
------------------+-----------------+-------------------------+-------------+--------------
 v_vmart_node0001 | auto-data-depot | /home/dbadmin/verticadb | 41211552768 | 80%
 v_vmart_node0002 | auto-data-depot | /home/dbadmin/verticadb | 41210717184 | 80%
 v_vmart_node0003 | auto-data-depot | /home/dbadmin/verticadb | 41211552768 | 80%
(3 rows)

将 analytics 子群集中所有节点的存储库大小更改为文件系统大小的 75%:

=> SELECT subcluster_name, subclusters.node_name, storage_locations.max_size, storage_locations.disk_percent FROM subclusters INNER JOIN storage_locations ON subclusters.node_name = storage_locations.node_name WHERE storage_locations.location_usage='DEPOT';
  subcluster_name   |      node_name       |   max_size  | disk_percent
--------------------+----------------------+----------------------------
 default_subcluster | v_verticadb_node0001 | 25264737485 | 60%
 default_subcluster | v_verticadb_node0002 | 25264737485 | 60%
 default_subcluster | v_verticadb_node0003 | 25264737485 | 60%
 analytics          | v_verticadb_node0004 | 25264737485 | 60%
 analytics          | v_verticadb_node0005 | 25264737485 | 60%
 analytics          | v_verticadb_node0006 | 25264737485 | 60%
 analytics          | v_verticadb_node0007 | 25264737485 | 60%
 analytics          | v_verticadb_node0008 | 25264737485 | 60%
 analytics          | v_verticadb_node0009 | 25264737485 | 60%
(9 rows)

=> SELECT ALTER_LOCATION_SIZE('depot','analytics','75%');
 ALTER_LOCATION_SIZE
---------------------
 depotSize changed.
(1 row)

=> SELECT subcluster_name, subclusters.node_name, storage_locations.max_size, storage_locations.disk_percent FROM subclusters INNER JOIN storage_locations ON subclusters.node_name = storage_locations.node_name WHERE storage_locations.location_usage='DEPOT';
  subcluster_name   |      node_name       |   max_size  | disk_percent
--------------------+----------------------+----------------------------
 default_subcluster | v_verticadb_node0001 | 25264737485 | 60%
 default_subcluster | v_verticadb_node0002 | 25264737485 | 60%
 default_subcluster | v_verticadb_node0003 | 25264737485 | 60%
 analytics          | v_verticadb_node0004 | 31580921856 | 75%
 analytics          | v_verticadb_node0005 | 31580921856 | 75%
 analytics          | v_verticadb_node0006 | 31580921856 | 75%
 analytics          | v_verticadb_node0007 | 31580921856 | 75%
 analytics          | v_verticadb_node0008 | 31580921856 | 75%
 analytics          | v_verticadb_node0009 | 31580921856 | 75%
(9 rows)

另请参阅

Eon 模式体系结构

2 - BACKGROUND_DEPOT_WARMING

仅限 Eon 模式

强制正在预热其存储库的节点开始处理查询,同时继续在后台预热其存储库。仅当节点正在加入数据库并激活其订阅时,才会进行存储库预热。此函数仅在以下情况下有效:

  • 数据库在 Eon 模式下运行。

  • 节点当前正在预热其存储库。

  • 该节点正在从公共存储中预热其存储库。当 UseCommunalStorageForBatchDepotWarming 配置参数设置为默认值 1 时就是这种情况。有关此参数的详细信息,请参阅 Eon 模式参数

调用此函数后,节点在参与查询时将在后台对其存储库进行预热。

此函数对未预热其存储库的节点没有影响。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

BACKGROUND_DEPOT_WARMING('node-name' [, 'subscription-name'])

参数

node-name
您要在后台预热其存储库的节点的名称。
订购名称
节点订购的分片的名称,您希望节点在后台预热。您可以在 NODE_SUBSCRIPTIONS 系统表的 SHARD_NAME 列中找到节点订阅的分片的名称。

返回值

指示节点预热将在后台继续的消息。

特权

用户必须是 超级用户。

示例

以下示例演示了 verticadb 数据库的节点 6 在后台对其存储库进行预热:


=> SELECT BACKGROUND_DEPOT_WARMING('v_verticadb_node0006');
                          BACKGROUND_DEPOT_WARMING
----------------------------------------------------------------------------
 Depot warming running in background. Check monitoring tables for progress.
(1 row)

另请参阅

3 - CANCEL_DEPOT_WARMING

仅限 Eon 模式

取消节点上的存储库预热。仅当节点正在加入数据库并激活其订阅时,才会进行存储库预热。您可以选择取消节点上的所有预热,或者取消特定分片订阅的预热。节点将结束其当前执行的任何数据传输,以对其存储库进行预热,并从其队列中移除与预热相关的待执行传输。它将保留已加载到其存储库中的所有数据。当取消对特定订阅的预热时,如果所有其他订阅都已预热,则将停止预热存储库。如果其他订阅未预热,节点会继续预热其他订阅。

此函数仅在以下情况下有效:

  • 数据库在 Eon 模式下运行。

  • 节点当前正在预热其存储库。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CANCEL_DEPOT_WARMING('node-name' [, 'subscription-name'])

参数

'node-name'
要取消其存储库预热的节点的名称。
'subscription-name'
希望节点停止预热的节点订阅的分片的名称。您可以在 NODE_SUBSCRIPTIONS 系统表的 SHARD_NAME 列中找到节点订阅的分片的名称。

返回值

返回一条消息,表明预热已被取消。

特权

用户必须是 超级用户。

用法注意事项

取消存储库预热会对查询的性能产生负面影响。具有冷存储库的节点可能需要从公共存储中检索其大部分数据,这比访问存储库要慢。

示例

下面演示了如何取消节点 7 上的存储库预热:


=> SELECT CANCEL_DEPOT_WARMING('v_verticadb_node0007');
   CANCEL_DEPOT_WARMING
--------------------------
 Depot warming cancelled.
(1 row)

另请参阅

4 - CANCEL_DRAIN_SUBCLUSTER

仅限 Eon 模式

取消一个或多个子群集的排空操作。此函数可以取消由 START_DRAIN_SUBCLUSTERSHUTDOWN_WITH_DRAIN 函数的排空部分启动的排空操作。CANCEL_DRAIN_SUBCLUSTER 将指定子群集中的所有节点标记为未排空。先前排空的节点再次接受新的客户端连接以及从负载均衡重定向的连接。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CANCEL_DRAIN_SUBCLUSTER( 'subcluster-name' )

参数

subcluster-name
要取消排空操作的子群集的名称。输入空字符串可取消对所有子群集的排空操作。

特权

超级用户

示例

以下示例演示了如何取消对子群集的排空操作。

首先,您可以查询 DRAINING_STATUS 系统表以查看当前正在排空哪些子群集:


=> SELECT node_name, subcluster_name, is_draining FROM draining_status ORDER BY 1;
node_name          | subcluster_name    | is_draining
-------------------+--------------------+-------
verticadb_node0001 | default_subcluster | f
verticadb_node0002 | default_subcluster | f
verticadb_node0003 | default_subcluster | f
verticadb_node0004 | analytics          | t
verticadb_node0005 | analytics          | t
verticadb_node0006 | analytics          | t

以下函数调用将取消 analytics 子群集的排空操作:


=> SELECT CANCEL_DRAIN_SUBCLUSTER('analytics');
             CANCEL_DRAIN_SUBCLUSTER
--------------------------------------------------------
Targeted subcluster: 'analytics'
Action: CANCEL DRAIN

(1 row)

要确认子群集不再进行排空,您可以再次查询 DRAINING_STATUS 系统表:


=> SELECT node_name, subcluster_name, is_draining FROM draining_status ORDER BY 1;
node_name          | subcluster_name    | is_draining
-------------------+--------------------+-------
verticadb_node0001 | default_subcluster | f
verticadb_node0002 | default_subcluster | f
verticadb_node0003 | default_subcluster | f
verticadb_node0004 | analytics          | f
verticadb_node0005 | analytics          | f
verticadb_node0006 | analytics          | f
(6 rows)

另请参阅

5 - CLEAN_COMMUNAL_STORAGE

仅限 Eon 模式

将公共存储中的无效数据标记为待删除,通常是由于 Vertica 清理机制失败而泄露的数据。需要调用此函数的事件包括:

  • 节点故障

  • 从 Enterprise 数据库到 Eon 数据库的迁移中断

  • 从备份中恢复对象

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CLEAN_COMMUNAL_STORAGE ( ['actually‑delete'] )

参数

actually‑delete
BOOLEAN,指定是否将数据文件添加到删除队列中:
  • true (默认值):将文件添加到 reaper 队列中并立即返回。排队的文件将通过 reaper 服务自动移除,或者可以通过调用 FLUSH_REAPER_QUEUE 手动移除。

  • false:报告有关额外文件的信息,但不会将其添加到删除排队中。

特权

超级用户

示例

=> SELECT CLEAN_COMMUNAL_STORAGE('true')
CLEAN_COMMUNAL_STORAGE
------------------------------------------------------------------
CLEAN COMMUNAL STORAGE
Task was canceled.
Total leaked files: 9265
Total size: 4236501526
Files have been queued for deletion.
Check communal_cleanup_records for more information.
(1 row)

6 - CLEAR_DATA_DEPOT

仅限 Eon 模式

删除指定的存储库数据。您可以从一个子群集、单个节点或整个数据库群集中清除单个表或所有表的存储库数据。清除存储库数据不会影响公共存储。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CLEAR_DATA_DEPOT( [ '[table‑name]' [, '[target-depots]'] ] )

参数

table‑name
要从目标存储库中删除的表的名称。如果忽略表名称或提供空字符串,则会从目标库中删除所有表的数据。
target-depots
指定此实参以清除指定存储库中的所有数据,为以下之一:
  • subcluster‑name:清除指定子群集中的存储库数据。

  • node-name:清除指定节点中的存储库数据。同一子群集中其他节点上的存储库数据不受影响。

(可选)此实参限定 table-name 的实参。如果忽略此实参或提供空字符串,Vertica 将清除数据库群集中的所有存储库数据。

特权

超级用户

示例

从子群集 subcluster_1 的存储库中清除表 t1 的所有存储库数据:

=> SELECT CLEAR_DATA_DEPOT('t1', 'subcluster_1');
 clear_data_depot
------------------
 Depot cleared
(1 row)

清除子群集 subcluster_1 中的所有存储库数据:

=> SELECT CLEAR_DATA_DEPOT('', 'subcluster_1');
 clear_data_depot
------------------
 Depot cleared
(1 row)

清除单个节点的所有存储库数据:

=> select clear_data_depot('','v_vmart_node0001');
 clear_data_depot
------------------
 Depot cleared
(1 row)

清除数据库群集中表 t1 的所有存储库数据:

=> SELECT CLEAR_DATA_DEPOT('t1');
 clear_data_depot
------------------
 Depot cleared
(1 row)

清除数据库群集中的所有存储库数据:

=> SELECT CLEAR_DATA_DEPOT();
 clear_data_depot
------------------
 Depot cleared
(1 row)

7 - CLEAR_DEPOT_PIN_POLICY_PARTITION

仅限 Eon 模式

从指定的表或投影分区中清除存储库固定策略。 对象取消固定后,可以被任何未固定或固定的对象从存储库中逐出。.

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CLEAR_DEPOT_PIN_POLICY_PARTITION( '[[database.]schema.]object‑name', 'min‑range‑value', 'max‑range‑value' [, subcluster ] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

object‑name
具有要清除的分区固定策略的表或投影。
min‑range‑value max‑range‑value
table 中指定的分区键范围内清除固定策略,其中 min-range-value 必须 ≤ max‑range‑value。如果策略适用于单个分区,则 min‑range‑valuemax‑range‑value 必须相等。
subcluster
subcluster 存储库中清除指定的固定策略。如果省略此参数,系统将从所有数据库存储库中清除该策略。

特权

超级用户

另请参阅

8 - CLEAR_DEPOT_PIN_POLICY_PROJECTION

仅限 Eon 模式

从指定的投影中清除存储库固定策略。 对象取消固定后,可以被任何未固定或固定的对象从存储库中逐出

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CLEAR_DEPOT_PIN_POLICY_PROJECTION( '[[database.]schema.]projection' [, 'subcluster' ] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

projection
具有要清除的固定策略的投影。
subcluster
subcluster 存储库中清除指定的固定策略。如果省略此参数,系统将从所有数据库存储库中清除该策略。

特权

超级用户

另请参阅

9 - CLEAR_DEPOT_PIN_POLICY_TABLE

仅限 Eon 模式

从指定的表中清除存储库固定策略。 对象取消固定后,可以被任何未固定或固定的对象从存储库中逐出

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CLEAR_DEPOT_PIN_POLICY_TABLE( '[[database.]schema.]table' [, 'subcluster' ] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

具有要清除的固定策略的表。
subcluster
subcluster 存储库中清除指定的固定策略。如果省略此参数,系统将从所有数据库存储库中清除该策略。

特权

超级用户

另请参阅

10 - CLEAR_FETCH_QUEUE

仅限 Eon 模式

从公共存储中移除所有条目或数据获取请求队列中特定事务的条目。您可以通过查询 DEPOT_FETCH_QUEUE 系统表来查看提取队列。此函数会同步移除所有排队的请求。并会在所有提取都从队列中移除后返回。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

CLEAR_FETCH_QUEUE([transaction_id])

参数

transaction_id
将从队列中清除其提取的事务的 ID。如果未指定此值,则从提取队列中移除所有提取。

示例

此示例将清除所有事务的提取队列。

=> SELECT CLEAR_FETCH_QUEUE();

    CLEAR_FETCH_QUEUE

--------------------------

Cleared the fetch queue.

(1 row)

此示例将清除特定事务的提取队列。

=> SELECT node_name,transaction_id FROM depot_fetch_queue;
      node_name       |  transaction_id
----------------------+-------------------
 v_verticadb_node0001 | 45035996273719510
 v_verticadb_node0003 | 45035996273719510
 v_verticadb_node0002 | 45035996273719510
 v_verticadb_node0001 | 45035996273719777
 v_verticadb_node0003 | 45035996273719777
 v_verticadb_node0002 | 45035996273719777

(6 rows)

=> SELECT clear_fetch_queue(45035996273719510);
    clear_fetch_queue
--------------------------
 Cleared the fetch queue.
(1 row)

=> SELECT node_name,transaction_id from depot_fetch_queue;
      node_name       |  transaction_id
----------------------+-------------------
 v_verticadb_node0001 | 45035996273719777
 v_verticadb_node0003 | 45035996273719777
 v_verticadb_node0002 | 45035996273719777

(3 rows)

11 - DEMOTE_SUBCLUSTER_TO_SECONDARY

仅限 Eon 模式

将一个 主子群集转换为 辅助子群集

如果以下任一情况为真,Vertica 将不允许对主子群集降级:

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

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

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

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

DEMOTE_SUBCLUSTER_TO_SECONDARY('subcluster-name')

参数

subcluster‑name
要降级为辅助子群集的主子群集的名称。

特权

超级用户

示例

以下示例将子群集 analytics_cluster 降级为辅助子群集:

=> 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)

尝试将包含启动程序节点的子群集降级会导致错误:

=> SELECT node_name FROM sessions WHERE user_name = 'dbadmin'
   AND client_type = 'vsql';
      node_name
----------------------
 v_verticadb_node0004
(1 row)

=> SELECT node_name, is_primary FROM subclusters WHERE subcluster_name = 'analytics';
      node_name       | is_primary
----------------------+------------
 v_verticadb_node0004 | t
 v_verticadb_node0005 | t
 v_verticadb_node0006 | t
(3 rows)

=> SELECT DEMOTE_SUBCLUSTER_TO_SECONDARY('analytics');
ERROR 9204:  Cannot promote or demote subcluster including the initiator node
HINT:  Run this command on another subcluster

另请参阅

12 - FINISH_FETCHING_FILES

仅限 Eon 模式

将排队等待从公共存储下载的所有文件提取到存储库。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

FINISH_FETCHING_FILES()

特权

超级用户

示例

获取所有排队下载的文件:

=> SELECT FINISH_FETCHING_FILES();
      FINISH_FETCHING_FILES
---------------------------------
 Finished fetching all the files
(1 row)

另请参阅

Eon 模式概念

13 - FLUSH_REAPER_QUEUE

仅限 Eon 模式

删除数据库中所有标记为待删除的数据。使用此函数可在 reaper 服务删除磁盘文件之前移除所有标记为待删除的数据。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

FLUSH_REAPER_QUEUE( [sync‑catalog] )

参数

sync‑catalog
指定在函数执行之前在所有节点的数据库编录中同步元数据
  • true (默认值):同步数据库编录

  • false:在未同步的情况下运行。

特权

超级用户

示例

移除所有标记为待删除的文件:

=> SELECT FLUSH_REAPER_QUEUE();
                 FLUSH_REAPER_QUEUE
-----------------------------------------------------
 Sync'd catalog and deleted all files in the reaper queue.
(1 row)

另请参阅

CLEAN_COMMUNAL_STORAGE

14 - MIGRATE_ENTERPRISE_TO_EON

仅限企业模式

将 Enterprise 数据库迁移到 Eon 模式数据库。MIGRATE_ENTERPRISE_TO_EON 在返回之前在前台运行;无论其返回成功或错误,它都会阻止源 Enterprise 数据库中同一会话中的所有操作。如果成功,MIGRATE_ENTERPRISE_TO_EON 将返回并显示迁移数据库中的节点列表。

如果迁移在元函数返回之前被中断,例如,客户端断开连接,或者发生网络中断,则迁移将返回错误。在这种情况下,请再次调用 MIGRATE_ENTERPRISE_TO_EON 以重新开始迁移。有关详细信息,请参阅处理中断迁移

您可以多次重复迁移到同一个公共存储位置,以捕获上一次迁移期间源数据库中的更改。有关详细信息,请参阅重复迁移

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

MIGRATE_ENTERPRISE_TO_EON ( 'communal‑storage‑location', 'depot‑location' [, is‑dry‑run] )
communal‑storage‑location
公共存储位置的 URI。有关每个受支持架构的 URI 语法示例,请参阅文件系统和对象存储
depot‑location
Eon 存储库位置的路径,通常为:
/vertica/depot
catalog‑location
/*pushed out to as yet unspecified release (http://jira.verticacorp.com:8080/jira/browse/VER-72507) */

Vertica 编录位置的完整路径。默认设置为:

communal‑storage‑location/metadata/database‑name/nodes/node‑name/Catalog/
is‑dry‑run
Boolean。如果设置为 true,MIGRATE_ENTERPRISE_TO_EON 将仅检查 Enterprise 源数据库是否符合所有迁移先决条件。如果元函数发现任何合规性问题,它会将这些问题写入数据库目录中的迁移错误日志 migrate_enterprise_to_eon_error.log 中。

默认值:false

特权

超级用户

示例

将 Enterprise 数据库迁移到 AWS 的 Eon 模式:

=> SELECT MIGRATE_ENTERPRISE_TO_EON ('s3://verticadbbucket', '/vertica/depot');
                      migrate_enterprise_to_eon
---------------------------------------------------------------------
 v_vmart_node0001,v_vmart_node0002,v_vmart_node0003,v_vmart_node0004
(1 row)

另请参阅

将企业数据库迁移到 Eon 模式

15 - PROMOTE_SUBCLUSTER_TO_PRIMARY

仅限 Eon 模式

将辅助子群集转换为 主子群集。不能使用此函数来提升包含 启动程序节点的子群集。必须在连接到另一个子群集中的节点时调用此函数。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

PROMOTE_SUBCLUSTER_TO_PRIMARY('subcluster-name')

参数

subcluster‑name
要提升为主子群集的辅助群集的名称。

特权

超级用户

示例

以下示例将名为 analytics_cluster 的子群集提升为主群集:

=> 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)

另请参阅

16 - REBALANCE_SHARDS

仅限 Eon 模式

在 Eon 模式下重新平衡子群集或整个群集中的分片分配。如果当前会话结束,则操作立即中止。根据数据库中对象的数量,重新平衡分片所需的时间以大致线性的方式增加。

在使用 ALTER NODE 修改群集或将节点添加到子群集后运行 REBALANCE_SHARDS。

重新平衡分片后,您将无法再从重新平衡之前的备份中还原对象。(始终可以执行完整备份。)重新平衡后,执行完整备份,以便将来能够从中还原对象。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

REBALANCE_SHARDS(['subcluster-name'])

参数

subcluster‑name
将重新平衡分片的子群集的名称。如果您未提供此参数,则数据库中的所有子群集均会重新平衡其分片。

特权

超级用户

示例

以下示例显示新添加的 analytics 子群集中的节点尚未有分片订阅。然后它将调用 REBALANCE_SHARDS 来更新节点的订阅:

=> 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_subcluster | v_verticadb_node0004 |             |
 analytics_subcluster | v_verticadb_node0005 |             |
 analytics_subcluster | v_verticadb_node0006 |             |
 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
(12 rows)

=> SELECT REBALANCE_SHARDS('analytics_subcluster');
 REBALANCE_SHARDS
-------------------
 REBALANCED SHARDS
(1 row)

=> 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_subcluster | v_verticadb_node0004 | replica     | ACTIVE
 analytics_subcluster | v_verticadb_node0004 | segment0001 | ACTIVE
 analytics_subcluster | v_verticadb_node0004 | segment0003 | ACTIVE
 analytics_subcluster | v_verticadb_node0005 | replica     | ACTIVE
 analytics_subcluster | v_verticadb_node0005 | segment0001 | ACTIVE
 analytics_subcluster | v_verticadb_node0005 | segment0002 | ACTIVE
 analytics_subcluster | v_verticadb_node0006 | replica     | ACTIVE
 analytics_subcluster | v_verticadb_node0006 | segment0002 | ACTIVE
 analytics_subcluster | 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)

另请参阅

17 - RESHARD_DATABASE

仅限 Eon 模式

更改数据库中分片的数量。此函数在运行时需要使用全局编录锁 (GCLX)。运行时取决于编录的大小。

RESHARD_DATABASE 不会立即影响公共存储中的存储容器。重新分片后,新的分片仍然指向现有容器。如果增加数据库中分片的数量,多个分片将指向同一个存储容器。最终,Tuple Mover (TM) 合并任务会将存储容器与新的分片分段边界重新对齐。如果希望 TM 立即重新对齐存储容器,请调用 DO_TM_TASK 来运行“RESHARDMERGEOUT”任务。

此函数不会中断大多数查询。但是,全局编录锁可能会影响数据加载和 DDL 语句。

语法

RESHARD_DATABASE(shard-count)

参数

shard-count
一个正整数,即重新分片数据库中分片的数量。有关选择合适的 shard-count 的信息,请参阅选择分片数量和初始节点计数

特权

超级用户

示例

请参阅更改数据库中的分片数

18 - SET_DEPOT_PIN_POLICY_PARTITION

仅限 Eon 模式

将表或投影的指定分区固定到子群集存储库或所有数据库存储库,以减少存储库逐出的风险。

仅当组内的所有分区都单独固定时,才能固定分区组。如果更改或移除表分区,Vertica 会删除该表的所有分区固定策略。表的固定策略(如有)不受影响。

有关固定策略和使用指南的详细信息,请参阅固定存储库对象

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SET_DEPOT_PIN_POLICY_PARTITION ( '[[database.]schema.]object‑name', 'min‑range‑value', 'max‑range‑value' [, 'subcluster' ] [, 'download' ] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

object-name
要固定的表或投影。如果指定一个投影,则该投影必须存储分区键。
min‑range‑value
max‑range‑value
要固定的 object-name 中分区键的最小值和最大值,其中 min-range-value 必须 ≤ max‑range‑value。要指定单个分区,min‑range‑valuemax‑range‑value 必须相等。
subcluster
subcluster 存储库上设置此固定策略。要在默认子群集上设置此策略,请指定 default_subcluster。如果省略此参数,系统将在所有数据库存储库上设置该策略。
download
布尔值,如果设置为 true,SET_DEPOT_PIN_POLICY_PARTITION 会立即将指定的分区添加到从公共存储下载的队列中。

默认值:false

特权

超级用户

固定策略的优先级

一般来说,涉及两个分区表的分区管理函数的优先级高于目标表的固定策略,如下所示:

例如,以下语句将分区从表 foo 复制到表 bar

=> SELECT COPY_PARTITIONS_TO_TABLE('foo', '1', '5', 'bar');

在这种情况下,将应用以下逻辑:

  • 如果两个表具有不同的分区固定策略,则应用目标表 bar 的分区键 1-5 的固定策略。

  • 如果表 bar 不存在,Vertica 将基于表 foo 进行创建,并复制 foo 的分区键 1- 5 的策略。随后,如果从任一表中清除分区固定策略,该固定策略也会从另一个表中清除。

另请参阅

19 - SET_DEPOT_PIN_POLICY_PROJECTION

仅限 Eon 模式

将投影固定到子群集存储库或所有数据库存储库,以减少其面临的存储库逐出风险。有关固定策略和使用指南的详细信息,请参阅固定存储库对象

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SET_DEPOT_PIN_POLICY_PROJECTION ( '[[database.]schema.]projection' [, 'subcluster' ] [, download ] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

projection
要固定的投影。
subcluster
subcluster 存储库上设置此固定策略。要在默认子群集上设置此策略,请指定 default_subcluster。如果省略此参数,系统将在所有数据库存储库上设置该策略。
download
布尔值,如果设置为 true,SET_DEPOT_PIN_POLICY_PROJECTION 会立即将指定的投影添加到从公共存储下载的队列中。

默认值:false

特权

超级用户

另请参阅

20 - SET_DEPOT_PIN_POLICY_TABLE

仅限 Eon 模式

将表固定到子群集存储库或所有数据库存储库,以减少其面临的存储库逐出风险。有关固定策略和使用指南的详细信息,请参阅固定存储库对象

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SET_DEPOT_PIN_POLICY_TABLE ( '[[database.]schema.]table' [, 'subcluster' ] [, download ] )

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

要固定的表。
subcluster
subcluster 存储库上设置此固定策略。要在默认子群集上设置此策略,请指定 default_subcluster。如果省略此参数,系统将在所有数据库存储库上设置该策略。
download
布尔值,如果设置为 true,SET_DEPOT_PIN_POLICY_TABLE 会立即将指定的表添加到从公共存储下载的队列中。

默认值:false

特权

超级用户

另请参阅

21 - SHUTDOWN_SUBCLUSTER

仅限 Eon 模式

关闭子群集。此函数将同步关闭子群集,并在关闭完成后返回子群集已关闭消息。如果子群集已关闭,此函数将不返回错误。

如果有活动用户会话连接到子群集,则停止子群集不会发出警告。此行为与停止单个节点相同。在停止子群集之前,确认没有用户连接到它。

如果想在关闭子群集之前排空客户端连接,则可以使用 SHUTDOWN_WITH_DRAIN 优雅地关闭子群集。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SHUTDOWN_SUBCLUSTER('subcluster‑name')

参数

subcluster‑name
要关闭的子群集的名称。

特权

超级用户

示例

以下示例演示了如何关闭子群集 analytics

=> SELECT subcluster_name, node_name, node_state FROM nodes order by 1,2;
  subcluster_name   |      node_name       | node_state
--------------------+----------------------+------------
 analytics          | v_verticadb_node0004 | UP
 analytics          | v_verticadb_node0005 | UP
 analytics          | v_verticadb_node0006 | UP
 default_subcluster | v_verticadb_node0001 | UP
 default_subcluster | v_verticadb_node0002 | UP
 default_subcluster | v_verticadb_node0003 | UP
(6 rows)

=> SELECT SHUTDOWN_SUBCLUSTER('analytics');
WARNING 4539:  Received no response from v_verticadb_node0004 in stop subcluster
WARNING 4539:  Received no response from v_verticadb_node0005 in stop subcluster
WARNING 4539:  Received no response from v_verticadb_node0006 in stop subcluster
 SHUTDOWN_SUBCLUSTER
---------------------
 Subcluster shutdown
(1 row)

=> SELECT subcluster_name, node_name, node_state FROM nodes order by 1,2;
  subcluster_name   |      node_name       | node_state
--------------------+----------------------+------------
 analytics          | v_verticadb_node0004 | DOWN
 analytics          | v_verticadb_node0005 | DOWN
 analytics          | v_verticadb_node0006 | DOWN
 default_subcluster | v_verticadb_node0001 | UP
 default_subcluster | v_verticadb_node0002 | UP
 default_subcluster | v_verticadb_node0003 | UP
(6 rows)

另请参阅

22 - SHUTDOWN_WITH_DRAIN

仅限 Eon 模式

优雅地关闭一个或多个子群集。此函数会排空子群集节点上的客户端连接,然后关闭子群集。这是关闭消息发送到子群集后返回的同步函数。

现有用户会话中的工作继续在正在清空的节点上进行,但节点拒绝新的客户端连接,并被排除在负载均衡操作之外。dbadmin 仍然可以连接到正在清空的节点。

现有连接完成其工作并关闭,或达到用户指定的超时后,将开始排空节点。一旦满足这些条件之一,此函数会立即继续关闭子群集。

有关正常关闭过程的详细信息,请参阅正常关闭

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SHUTDOWN_WITH_DRAIN( 'subcluster-name', timeout-seconds )

参数

subcluster-name
要关闭的子群集的名称。输入空字符串以关闭数据库中的所有子群集。
timeout-seconds
在强制关闭 subcluster-name 的客户端连接并关闭子群集之前等待的秒数。行为取决于 timeout-seconds 的符号:
  • 正整数:此函数会等到运行时达到 timeout-seconds 或客户端连接完成工作并关闭才开始运行。一旦满足这两个条件之一,此函数会立即继续关闭子群集。
  • 零:此函数会立即关闭任何打开的客户端连接并关闭子群集。
  • 负整数:此函数将子群集标记为排空,并无限期地等待关闭子群集,直到所有活动用户会话断开连接。

特权

超级用户

示例

在以下示例中,此函数将名为 analytics 的子群集标记为排空,然后在现有客户端连接关闭或 300 秒后立即将其关闭:

=> SELECT SHUTDOWN_WITH_DRAIN('analytics', 120);
NOTICE 0:  Draining has started on subcluster (analytics)
NOTICE 0:  Begin shutdown of subcluster (analytics)
                              SHUTDOWN_WITH_DRAIN
--------------------------------------------------------------------------------------------------------------------
Set subcluster (analytics) to draining state
Waited for 3 nodes to drain
Shutdown message sent to subcluster (analytics)

(1 row)

您可以查询 DC_DRAINING_EVENTS 表,以查看有关排空和关闭事件的详细信息,例如是否存在任何用户会话被强制关闭。开始关闭后,此子群集有一个活动用户会话,但其会在达到超时之前关闭:

=> SELECT event_type, event_type_name, event_description, event_result, event_result_name FROM dc_draining_events;
 event_type |       event_type_name        |                          event_description                          | event_result | event_result_name
------------+------------------------------+---------------------------------------------------------------------+--------------+-------------------
          0 | START_DRAIN_SUBCLUSTER       | START_DRAIN for SHUTDOWN of subcluster (analytics)                  |            0 | SUCCESS
          2 | START_WAIT_FOR_NODE_DRAIN    | Wait timeout is 120 seconds                                         |            4 | INFORMATIONAL
          4 | INTERVAL_WAIT_FOR_NODE_DRAIN | 1 sessions remain after 0 seconds                                   |            4 | INFORMATIONAL
          4 | INTERVAL_WAIT_FOR_NODE_DRAIN | 1 sessions remain after 30 seconds                                  |            4 | INFORMATIONAL
          3 | END_WAIT_FOR_NODE_DRAIN      | Wait for drain ended with 0 sessions remaining                      |            0 | SUCCESS
          5 | BEGIN_SHUTDOWN_AFTER_DRAIN   | Starting shutdown of subcluster (analytics) following drain         |            4 | INFORMATIONAL
(6 rows)

另请参阅

23 - START_DRAIN_SUBCLUSTER

仅限 Eon 模式

排空一个或多个子群集。此函数将指定子群集中的所有节点标记为排空。现有用户会话继续在排空节点上运行,但这些节点拒绝新的客户端连接,且被排除在负载均衡操作之外。但 dbadmin 仍然可以连接到排空节点。

在优雅关闭的过程中,要排空子群集上的连接,可调用 SHUTDOWN_WITH_DRAIN。有关详细信息,请参阅优雅关闭

要取消对子群集的排空操作,请调用 CANCEL_DRAIN_SUBCLUSTER。如果停止子群集中的所有节点排空操作,则会在重新启动时将这些节点标记为未排空。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

START_DRAIN_SUBCLUSTER( 'subcluster-name' )

参数

subcluster-name
要排空的子群集的名称。输入空字符串将排空数据库中的所有子群集。

特权

超级用户

示例

以下示例演示了如何排空名为 analytics 的子群集:

=> SELECT subcluster_name, node_name, node_state FROM nodes;
subcluster_name    |      node_name     | node_state
-------------------+--------------------+------------
default_subcluster | verticadb_node0001 | UP
default_subcluster | verticadb_node0002 | UP
default_subcluster | verticadb_node0003 | UP
analytics          | verticadb_node0004 | UP
analytics          | verticadb_node0005 | UP
analytics          | verticadb_node0006 | UP
(6 rows)

=> SELECT START_DRAIN_SUBCLUSTER('analytics');
               START_DRAIN_SUBCLUSTER
-------------------------------------------------------
Targeted subcluster: 'analytics'
Action: START DRAIN
(1 row)

您可以通过查询 DRAINING_STATUS 系统表来确认子群集正在排空:


=> SELECT node_name, subcluster_name, is_draining FROM draining_status ORDER BY 1;
node_name          | subcluster_name    | is_draining
-------------------+--------------------+-------
verticadb_node0001 | default_subcluster | f
verticadb_node0002 | default_subcluster | f
verticadb_node0003 | default_subcluster | f
verticadb_node0004 | analytics          | t
verticadb_node0005 | analytics          | t
verticadb_node0006 | analytics          | t

另请参阅

24 - START_REAPING_FILES

仅限 Eon 模式

一个异步函数,在后台启动磁盘文件删除。默认情况下,此元函数会在开始删除之前同步编录。磁盘文件删除由 FLUSH_REAPER_QUEUE 在前台处理。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

START_REAPING_FILES( [sync‑catalog] )

参数

sync‑catalog
指定在函数执行之前在所有节点的数据库编录中同步元数据
  • true (默认值):同步数据库编录

  • false:在未同步的情况下运行。

特权

超级用户

示例

启动 reaper 服务:

=> SELECT START_REAPING_FILES();

启动 reaper 服务并跳过初始编录同步:

=> SELECT START_REAPING_FILES(false);

25 - SYNC_CATALOG

仅限 Eon 模式

将编录同步到公共存储,以便在编录快要崩溃时恢复当前编录版本。Vertica 将所有待处理的检查点和事务日志同步到公共存储。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

SYNC_CATALOG( [ 'node‑name' ] )

参数

node‑name
要同步的节点。如果忽略此实参,Vertica 会同步所有节点上的编录。

特权

超级用户

示例

同步所有节点上的编录:

=> SELECT SYNC_CATALOG();

同步一个节点上的编录:

=> SELECT SYNC_CATALOG( 'node001' );