fsyncUnlock
定义
fsyncUnlock
减少服务器或集群的锁计数。要启用写操作,锁计数必须为零。
从 MongoDB 7.1 版本开始(也适用于 7.0.2、6.0.11 和 5.0.22 版本)以下
fsync
和fsyncUnlock
命令可以在mongos
上运行以锁定和解锁分片集群。在完成备份操作后,使用此命令解锁以取消写阻塞。
重要
服务器维护一个 fsync 锁计数。将
fsync
命令的lock
字段设置为true
时,会增加锁计数,而fsyncUnlock
命令会减少它。要启用已锁定服务器或集群的写操作,需要调用fsyncUnlock
命令,直到锁计数达到零。fsyncUnlock
是一个管理操作。通常您会在数据库 备份操作 后使用fsyncUnlock
。提示
在
mongosh
中,此命令还可以通过db.fsyncUnlock()
辅助方法运行.辅助方法对
mongosh
用户来说很方便,但它们可能不会返回与数据库命令相同级别的信息。在不需要便利性或需要额外的返回字段的情况下,请使用数据库命令。
兼容性
此命令可在以下环境中部署的部署中使用
MongoDB Enterprise:基于订阅的自管理版本的MongoDB
MongoDB Community:源代码可用的、免费使用且自管理的MongoDB版本
语法
该命令具有以下语法
db.adminCommand( { fsyncUnlock: 1, comment: <any> } )
comment
字段是可选的,可能包含任何数据类型的注释。
结果
操作返回以下字段的文档
字段 | 描述 |
---|---|
info | 关于操作状态的信息 |
lockCount | 操作后实例上剩余的锁数量。 |
ok | 状态码。 |
示例
考虑一个场景,如果已经对 db.fsyncLock()
发起了两次。以下 fsyncUnlock
操作将 db.fsyncLock()
所占用的锁减少1
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
实例已解锁以允许写入。