Docs 主页 → 开发应用程序 → MongoDB Manual
shutdown
5.0 版本中的更改。
shutdown
shutdown
命令会清理所有数据库资源,然后终止进程。您必须对shutdown
管理员数据库 发出 命令。
语法
该命令具有以下语法:
db.adminCommand( { shutdown: 1, force: <boolean> timeoutSecs: <int>, comment: <any> } )
命令字段
该命令使用以下字段:
字段 | 说明 |
---|---|
指定 | |
可选。 从 MongoDB 5.0 开始,
对于 静止期由以下各项指定:
timeoutSecs指定一个时间段(以秒为单位)。默认为:
从 MongoDB 5开始。 0 、 | |
comment | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
提示
另请参阅:
行为
对于mongod
使用 Authentication 启动的 ,您必须通过经过身份验证的连接运行shutdown
。有关详细信息,请参阅 访问控制 。
对于在mongod
没有 Authentication 的情况下启动的 ,您必须从连接到本地主机接口的客户端运行shutdown
。例如,在与 相同的主机上运行带有 选项的mongosh
--host "127.0.0.1"
{mongod
。
shutdown
(针对副本集节点)
shutdown
如果副本集节点正在运行某些操作(例如 索引构建 ),则 会失败。您可以指定 force: true 来强制节点中断这些操作并关闭。
关闭副本集主节点、从节点或 mongos
从 MongoDB 5.0 开始,mongod
和 mongos
进入静默期,以允许所有正在进行的数据库操作在关闭之前完成。
尝试降级到从节点。
如果降级失败,并且:
shutdown
运行了db.shutdownServer()
或mongod
命令,如果 力场 为 true, 仅继续执行关闭步骤,或者
进入静默期。
结束所有剩余的数据库操作。
关闭。
对于 mongod
从节点或 mongos
关闭请求,在请求关闭之后进入静默期。
静止期由以下各项指定:
timeoutSecs字段(如果运行了
shutdown
或db.shutdownServer()
命令),或者shutdownTimeoutMillisForSignaledShutdown
服务器参数(如果SIGTERM
信号已发送到mongod
),或者mongosShutdownTimeoutMillisForSignaledShutdown
服务器参数(如果将SIGTERM
信号发送到mongos
)。
mongod
或 mongos
关闭时,客户端无法新建相关连接。
timeoutSecs指定一个时间段(以秒为单位)。默认为:
从 MongoDB 5.0 开始为 15 秒。
在 MongoDB 5.0 以前的版本中为 10 秒。
mongod
使用timeoutSecs ,如下所示:
如果当前节点是副本集的主节点,则
mongod
会等待timeoutSecs字段指定的秒数,让可选举节点赶上主节点,然后再降级主节点。有关追赶时间的详细信息,请参阅复制延迟。如果当前节点在降级主节点身份后处于
SECONDARY
状态,则timeoutSecs中指定的任何剩余时间都将用于静默期,以便完成现有操作。新操作将发送到其他副本集节点。
从 MongoDB 5开始。 0 、 mongos
使用timeoutSecs作为静默期,以允许完成现有操作。新操作将发送到其他mongos
节点。在5之前的 MongoDB 版本中。 0 、 mongos
会立即关闭且不使用timeoutSecs 。
警告
强制关闭主节点可能会导致所有尚未复制到从节点的写入操作发生回滚。
访问控制
要在实施shutdown
mongod
身份验证 的 上运行 ,经过身份验证的用户 必须 具有shutdown
特权。例如,具有内置角色hostManager
的用户就拥有适当的权限。
举例
关闭 mongod
db.adminCommand({ "shutdown" : 1 })
强制关闭 mongod
db.adminCommand({ "shutdown" : 1, "force" : true })
关闭超时时间较长的主节点mongod
db.adminCommand({ "shutdown" : 1, timeoutSecs: 60 })