文档菜单
文档首页
/
MongoDB 手册
/ / /

shutdown

在本页

  • 兼容性
  • 语法
  • 命令字段
  • 行为
  • 访问控制
  • 示例

更改在版本5.0.

shutdown

shutdown命令清理所有数据库资源然后终止进程。您必须在admin数据库.

此命令在以下环境中托管的应用程序中可用

  • MongoDB Atlas:云中MongoDB部署的完全托管服务

重要

此命令不支持M0、M2、M5和M10+集群。有关更多信息,请参阅不支持命令。

该命令具有以下语法

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

该命令接受以下字段

字段
描述

指定 1.

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

您可以使用 force 暂停和恢复正在进行的索引构建。有关更多信息,请参阅shutdown on Replica Set Members

可选。

从 MongoDB 5.0 开始,mongodmongos 进入静默期,以便在关闭之前允许任何正在进行的数据库操作完成。

如果 mongod 主节点 收到关闭请求,主节点

  1. 尝试降至 副节点

    如果降级失败并且一个

  2. 进入静默期。

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

  4. 关闭。

对于 mongodmongos 的关闭请求,静默期是在请求关闭后进入的。

静默期由以下

客户端无法打开到正在关闭的 mongodmongos 的新连接。

timeoutSecs 指定了一个时间长度,单位为秒。从 MongoDB 5.0 开始,默认值为

  • 15秒。

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

mongod 如下使用 timeoutSecs

  • 如果当前节点是副本集的 主节点,则 mongod 等待最多由 timeoutSecs 字段指定的时间,以便可选举节点赶上,然后降级为主节点。有关赶上时间的详细信息,请参阅 复制延迟

  • 如果当前节点在降级为主节点后处于 SECONDARY 状态,则在 timeoutSecs 中指定的剩余时间将用于静默期,允许现有操作完成。新操作将发送到其他副本集节点。

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

注释

可选。用户提供的注释,附加到此命令。一旦设置,此注释将出现在以下位置的此命令记录旁边

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

提示

另请参阅

对于使用 自管理部署的身份验证 启动的 mongod,您必须通过认证连接运行 shutdown。有关更多信息,请参阅 访问控制

对于未开启身份验证mongod,您必须从连接到本地接口的客户端运行 shutdown。例如,可以在与 mongod 相同的主机机器上运行带有 --host "127.0.0.1" 选项的 mongosh

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

从 MongoDB 5.0 开始,mongodmongos 进入静默期,以便在关闭之前允许任何正在进行的数据库操作完成。

如果 mongod 主节点 收到关闭请求,主节点

  1. 尝试降至 副节点

    如果降级失败并且一个

  2. 进入静默期。

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

  4. 关闭。

对于 mongodmongos 的关闭请求,静默期是在请求关闭后进入的。

静默期由以下

客户端无法打开到正在关闭的 mongodmongos 的新连接。

timeoutSecs 指定了一个时间长度,单位为秒。从 MongoDB 5.0 开始,默认值为

  • 15秒。

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

mongod 如下使用 timeoutSecs

  • 如果当前节点是副本集的 主节点,则 mongod 等待最多由 timeoutSecs 字段指定的时间,以便可选举节点赶上,然后降级为主节点。有关赶上时间的详细信息,请参阅 复制延迟

  • 如果当前节点在降级为主节点后处于 SECONDARY 状态,则在 timeoutSecs 中指定的剩余时间将用于静默期,允许现有操作完成。新操作将发送到其他副本集节点。

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

警告

强制关闭主节点可能会导致尚未复制到副节点的任何写入操作 回滚

要在强制shutdown认证的 mongod 上运行 shutdown,认证用户 必须 拥有 shutdown 权限。例如,具有内置角色 hostManager 的用户拥有适当的权限。

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

返回

setUserWriteBlockMode