Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

db.shutdownServer()

在此页面上

  • 兼容性
  • 行为
  • 访问控制
  • 示例

5.0 版本中的更改

db.shutdownServer()

安全彻底地关闭当前的 mongodmongos进程。 您必须对db.shutdownServer() 管理员数据库 发出 操作。

db.shutdownServer() 采用以下语法:

db.shutdownServer({
force: <boolean>,
timeoutSecs: <int>
})

该方法采用以下字段:

字段
说明

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

您可以使用 force 暂停和恢复正在进行的索引构建。有关更多信息,请参阅 db.shutdownServer() 副本集节点

可选。

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

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

  1. 尝试降级到从节点。

    如果降级失败,并且:

  2. 进入静默期。

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

  4. 关闭。

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

静止期由以下各项指定:

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

在MongoDB 4.4及更早版本从节点(secondary node from replica set),对于mongod主节点 (primary node in the replica set)节点, timeoutSecs主节点 (primary node in the replica set)节点应等待从节点赶上的秒数。 如果没有从节点在指定时间内赶上,则该命令将失败。 默认为10秒。

该操作为 shutdown 命令提供一个包装器。

此方法可用于以下环境中托管的部署:

重要

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

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

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

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

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

  1. 尝试降级到从节点。

    如果降级失败,并且:

  2. 进入静默期。

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

  4. 关闭。

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

静止期由以下各项指定:

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

警告

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

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

db.getSiblingDB("admin").shutdownServer()
db.getSiblingDB("admin").shutdownServer({ "force" : true })
db.getSiblingDB("admin").shutdownServer({ "timeoutSecs": 60 })

后退

db.setProfilingLevel