停止数据库

在很多情况下,必须停止数据库,例如,在升级或执行各种维护任务之前。可以通过以下方法之一停止正在运行的数据库:

如果已连接任何用户或者 Database Designer 正在构建或部署数据库设计,则无法停止正在运行的数据库。



管理工具

要使用 admintools 停止正在运行的数据库:

  1. 验证是否所有群集节点都已启动。如果任何节点已关闭,请确定并重新启动它们

  2. 关闭所有用户会话:

    • 通过查询 SESSIONS 系统表确定所有具有活动会话的用户。通知用户即将关闭,并请求他们关闭其会话。

    • 通过将配置参数 MaxClientSessions 暂时重置为 0 来阻止用户启动新会话:

      => ALTER DATABASE DEFAULT SET MaxClientSessions = 0;
      
    • 使用 Vertica 函数 CLOSE_SESSIONCLOSE_ALL_SESSIONS 关闭所有剩余用户会话。

  3. 打开 Vertica 管理工具

  4. 从主菜单中:

    • 选择“停止数据库 (Stop Database)”

    • 单击确定 (OK)

  5. 选择要停止的数据库,然后单击确定 (OK)

  6. 输入密码(如果系统询问),然后单击确定 (OK)

  7. 当系统提示数据库关闭完成时,单击确定 (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_SUBCLUSTERSHUTDOWN_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)