SHUTDOWN_WITH_DRAIN
仅限 Eon 模式
优雅地关闭一个或多个子群集。此函数会排空子群集节点上的客户端连接,然后关闭子群集。这是关闭消息发送到子群集后返回的同步函数。
现有用户会话中的工作继续在正在清空的节点上进行,但节点拒绝新的客户端连接,并被排除在负载均衡操作之外。dbadmin 仍然可以连接到正在清空的节点。
现有连接完成其工作并关闭,或达到用户指定的超时后,将开始排空节点。一旦满足这些条件之一,此函数会立即继续关闭子群集。
有关正常关闭过程的详细信息,请参阅正常关闭。
当心
此函数不测试目标子群集是否为关键子群集(丢失会导致数据库关闭的子群集)。使用此函数关闭关键子群集会导致数据库关闭。在调用此函数之前,请始终查询 CRITICAL_SUBCLUSTERS 系统表,以确认要关闭的子群集不是关键子群集。这是元函数。您必须在顶级 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)