On this page
db.fsyncLock()
在本页面
Definition
db.
fsyncLock
( )- 强制mongod将所有未完成的写操作刷新到磁盘并锁定* entire * mongod实例,以防止其他写操作,直到用户使用相应的db.fsyncUnlock()命令释放该锁为止。
Important
db.fsyncLock()和db.fsyncUnlock()操作保持锁定计数。 db.fsyncLock()递增锁计数,db.fsyncUnlock()递减锁计数。
要解锁mongod实例以进行写入,锁定计数必须为零。也就是说,对于给定数量的db.fsyncLock()操作,您必须发出相应数量的db.fsyncUnlock()操作才能解锁实例以进行写入。
db.fsyncLock()的语法为:
db.fsyncLock()
该操作返回包含以下字段的文档:
info
-有关操作状态的信息lockCount
(* 3.4 版中的新增功能*)-当前实例上的锁数。seeAlso
-链接到fsync命令文档。ok
-状态代码。
此命令使用以下语法为fsync数据库命令提供了简单的包装:
{ fsync: 1, lock: true }
db.fsyncLock()是 Management 命令。您可以使用此操作锁定数据库并为backup operations创建一个窗口。
Behavior
db.fsyncLock()确保可以使用cp
,scp
或tar
等低级备份 Util 安全地复制数据文件。开始使用复制的文件的mongod包含与锁定的mongod上的用户写入数据没有区别的用户写入数据。
由于诸如journaling syncs或WiredTiger snapshots之类的操作,被锁定的mongod的数据文件可能会更改。尽管这对逻辑数据(例如,Client 端访问的数据)没有影响,但某些备份 Util 可能会检测到这些更改并发出警告或失败并出现错误。有关 MongoDB 建议的备份 Util 和过程的更多信息,请参见MongoDB 备份方法。
Example
以下操作运行db.fsyncLock():
db.fsyncLock()
该操作返回以下状态文档,其中包括lockCount
:
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"lockCount" : NumberLong(1),
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}
如果再次运行db.fsyncLock(),该操作将使lockCount
递增:
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"lockCount" : NumberLong(2),
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}
要解锁实例以进行写入,必须运行两次db.fsyncUnlock()才能将lockCount
减小为 0.