fsyncUnlock
定义
fsyncUnlock
减少服务器或集群上的锁计数。 要启用写入操作,锁计数必须为零。
从MongoDB 7.0.2开始 (从6.0.11和5.0.22开始也可用)
fsync
和fsyncUnlock
命令可以在mongos
上运行以锁和解锁分片集群。完成备份操作后,使用此命令取消阻止写入。
重要
服务器维护 fsync 锁计数。
lock
字段设置为true
的fsync
命令会递增锁计数,而fsyncUnlock
命令会递减锁计数。 要在锁定的服务器或集群上启用写入,请调用fsyncUnlock
命令,直到锁计数为零。fsyncUnlock
是一项管理操作。 通常,您会在数据库fsyncUnlock
备份操作 后使用 。提示
在
mongosh
中,该命令也可通过db.fsyncUnlock()
辅助方法运行。辅助方法对
mongosh
用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.adminCommand( { fsyncUnlock: 1, comment: <any> } )
comment
字段是可选的,可以包含任何数据类型的注释。
结果
该操作返回一个包含以下字段的文档:
字段 | 说明 |
---|---|
info | 有关操作状态的信息 |
lockCount | 操作后实例上剩余的锁数量。 |
ok | 状态代码。 |
示例
以 db.fsyncLock()
已发布两次的情况为例。以下fsyncUnlock
操作可通过1减少 db.fsyncLock()
占用的锁定:
db.adminCommand( { fsyncUnlock: 1 } )
该操作将返回以下文档:
{ "info" : "fsyncUnlock completed", "lockCount" : NumberLong(1), "ok" : 1 }
由于lockCount
大于 0,因此mongod
实例被锁定以防止写入。 要解锁实例以进行写入,请再次运行解锁操作:
db.adminCommand( { fsyncUnlock: 1 } )
该操作将返回以下文档:
{ "info" : "fsyncUnlock completed", "lockCount" : NumberLong(0), "ok" : 1 }
mongod
实例已解锁,无法写入。