对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

shutdown(数据库命令)

在版本5.0中进行了更改。

shutdown

shutdown命令会清理所有数据库资源,然后终止进程。您必须对管理员数据库发出shutdown 命令。

此命令可用于以下环境中托管的部署:

重要

MongoDB Atlas 集群不支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。

该命令具有以下语法:

db.adminCommand(
{
shutdown: 1,
force: <boolean>
timeoutSecs: <int>,
comment: <any>
}
)

该命令使用以下字段:

字段
说明

指定 1 。

可选。指定 true 以强制关闭 mongod 或 mongos。强制关闭会中断 mongod 或 mongos 上正在进行的任何操作,并可能导致意外行为。

您可以使用 force 暂停和恢复正在进行的索引构建。有关更多信息,请参阅 副本集成员上的 shutdown。

可选。

从 MongoDB 5.0 开始,mongod 和 mongos 进入静默期,以允许所有正在进行的数据库操作在关闭之前完成。

如果一个 mongod 主节点收到关闭请求,则主节点:

  1. 尝试降级到从节点。

    如果降级失败,并且:

    • 运行了 shutdown 或 db.shutdownServer() 命令,如果字段为 true,则 mongod 仅继续执行关闭步骤,或者

    • SIGTERM 信号已发送到 mongod,mongod 始终继续执行关闭步骤。

  2. 进入静默期。

  3. 结束所有剩余的数据库操作。

  4. 关闭。

对于 mongod 从节点或 mongos 关闭请求,在请求关闭之后进入静默期。

静止期由以下各项指定:

mongod 或 mongos 关闭时,客户端无法新建相关连接。

timeoutSecs 指定一个时间段(以秒为单位)。默认为:

  • 从 MongoDB 5.0 开始为 15 秒。

  • 在 MongoDB 5.0 以前的版本中为 10 秒。

mongod使用 timeoutSecs,如下所示:

从MongoDB5.0 开始,mongos 使用 timeoutSecs 作为静默期,以允许完成现有操作。新操作将发送到其他mongos 节点。在 5.0 之前的MongoDB版本中, mongos会立即关闭且不使用 timeoutSecs 。

comment

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

mongod对于在自托管部署上使用身份验证启动的 ,您必须通过经过身份验证的连接运行shutdown 。有关详细信息,请参阅访问控制。

mongod对于在自管理部署上启动但未进行身份验证的shutdown ,您必须从连接到本地主机接口的客户端运行mongosh --host "127.0.0.1"。示例,在与 相同的托管上运行带有 选项的mongod 。

shutdown如果副本集节点正在运行某些操作(例如索引构建),则 会失败。您可以指定 force: true 来强制成员将索引构建进度保存到磁盘。mongod 会在重新启动时恢复索引构建,并从保存的检查点继续运行。

从 MongoDB 5.0 开始,mongod 和 mongos 进入静默期,以允许所有正在进行的数据库操作在关闭之前完成。

如果一个 mongod 主节点收到关闭请求,则主节点:

  1. 尝试降级到从节点。

    如果降级失败,并且:

    • 运行了 shutdown 或 db.shutdownServer() 命令,如果字段为 true,则 mongod 仅继续执行关闭步骤,或者

    • SIGTERM 信号已发送到 mongod,mongod 始终继续执行关闭步骤。

  2. 进入静默期。

  3. 结束所有剩余的数据库操作。

  4. 关闭。

对于 mongod 从节点或 mongos 关闭请求,在请求关闭之后进入静默期。

静止期由以下各项指定:

mongod 或 mongos 关闭时,客户端无法新建相关连接。

timeoutSecs 指定一个时间段(以秒为单位)。默认为:

  • 从 MongoDB 5.0 开始为 15 秒。

  • 在 MongoDB 5.0 以前的版本中为 10 秒。

mongod使用 timeoutSecs,如下所示:

从MongoDB5.0 开始,mongos 使用 timeoutSecs 作为静默期,以允许完成现有操作。新操作将发送到其他mongos 节点。在 5.0 之前的MongoDB版本中, mongos会立即关闭且不使用 timeoutSecs 。

警告

强制关闭主节点可能会导致所有尚未复制到从节点的写入操作发生回滚。

要在对自托管部署实施身份验证的shutdown mongod上运行 ,经过身份验证的用户必须具有 shutdown权限。示例,具有内置角色hostManager 的用户就拥有相应的权限。

db.adminCommand({ "shutdown" : 1 })
db.adminCommand({ "shutdown" : 1, "force" : true })
db.adminCommand({ "shutdown" : 1, timeoutSecs: 60 })