停止数据库
在很多情况下,必须停止数据库,例如,在升级或执行各种维护任务之前。可以通过以下方法之一停止正在运行的数据库:
如果已连接任何用户或者 Database Designer 正在构建或部署数据库设计,则无法停止正在运行的数据库。
提示
管理工具
要使用 admintools 停止正在运行的数据库:
-
验证是否所有群集节点都已启动。如果任何节点已关闭,请确定并重新启动它们。
-
关闭所有用户会话:
-
通过查询
SESSIONS
系统表确定所有具有活动会话的用户。通知用户即将关闭,并请求他们关闭其会话。 -
通过将配置参数 MaxClientSessions 暂时重置为 0 来阻止用户启动新会话:
=> ALTER DATABASE DEFAULT SET MaxClientSessions = 0;
-
使用 Vertica 函数
CLOSE_SESSION
和CLOSE_ALL_SESSIONS
关闭所有剩余用户会话。
注意
还可以使用函数SHUTDOWN
强制关闭数据库并阻止新会话。 -
-
打开 Vertica 管理工具。
-
从主菜单中:
-
选择“停止数据库 (Stop Database)”
-
单击确定 (OK)
-
-
选择要停止的数据库,然后单击确定 (OK)。
-
输入密码(如果系统询问),然后单击确定 (OK)。
-
当系统提示数据库关闭完成时,单击确定 (OK)。
命令行
可以使用命令行工具 stop_db
停止数据库:
$ /opt/vertica/bin/admintools -t stop_db -d db-name [-p password] [-F | --force]
如果省略 -F
(或 --force
)选项,则该命令将检查有无活动会话。如果用户已连接到数据库,则该命令将中止并显示一条错误消息,还将列出所有活动会话。例如:
$ /opt/vertica/bin/admintools -t stop_db -d VMart
Info: no password specified, using none
Active session details
| Session id | Host Ip | Connected User |
| ------- -- | ---- -- | --------- ---- |
| v_vmart_node0001-91901:0x162 | 10.20.100.247 | ryan |
Database VMart not stopped successfully for the following reason:
Unexpected output from shutdown: Shutdown: aborting shutdown
NOTICE: Cannot shut down while users are connected
使用选项 -F
(或 --force
)将覆盖用户连接并强制关闭。
Vertica 函数
可以使用 SHUTDOWN 函数停止数据库。默认情况下,如果连接了任何用户,则关闭将失败。如果要强制关闭而不考虑任何活动用户连接,则可以运行以下命令:
=> SELECT SHUTDOWN('true');
SHUTDOWN
-------------------------
Shutdown: sync complete
(1 row)
在 Eon 模式数据库中,可以使用 SHUTDOWN_SUBCLUSTER 和 SHUTDOWN_WITH_DRAIN 函数停止子群集。SHUTDOWN_SUBCLUSTER 会立即关闭子群集,而 SHUTDOWN_WITH_DRAIN 会执行正常关闭,在关闭子群集之前从子群集中排空客户端连接。有关详细信息,请参阅启动和停止子群集。
以下示例演示了如何使用 SHUTDOWN_WITH_DRAIN 关闭 Eon 模式数据库中的所有子群集:
=> SELECT SHUTDOWN_WITH_DRAIN('', 0);
NOTICE 0: Begin shutdown of subcluster (default_subcluster, analytics)
SHUTDOWN_WITH_DRAIN
-----------------------------------------------------------------------
Shutdown message sent to subcluster (default_subcluster, analytics)
(1 row)