您的位置:首页 > 数据库 > Mongodb

mongodb给我们提供了fsync+lock机制把数据暴力的刷到硬盘上

2017-03-08 17:39 225 查看
能不能把数据暴力的刷到硬盘上,当然是可以的,mongodb给我们提供了fsync+lock机制就能满足我们提的需求。

fsync+lock首先会把缓冲区数据暴力刷入硬盘,然后给数据库一个写入锁,其他实例的写入操作全部被阻塞,直到fsync

+lock释放锁为止。

这里就不测试了。

加锁: db.runCommand({"fsync":1,"lock":1})

释放锁: db.$cmd.unlock.findOne()

fsync

Forces the
mongod
process to flush all pending writes from the storage layer to disk. Optionally, you can use
fsync
to lock the
mongod
instance and block write operations for the purpose of capturing backups.

As applications write data, MongoDB records the data in the storage layer and then writes the data to disk within the
syncPeriodSecs
interval, which is 60 seconds by default. Run
fsync
when you want to flush writes to disk ahead of that interval.

The
fsync
command has the following syntax:

{ fsync: 1, async: <Boolean>, lock: <Boolean> }


The
fsync
command has the following fields:

FieldTypeDescription
fsync
integerEnter “1” to apply
fsync
.
async
booleanOptional. Runs
fsync
asynchronously. By default, the
fsync
operation is synchronous.
lock
booleanOptional. Locks
mongod
instance and blocks all write operations.

Examples

Run Asynchronously

The
fsync
operation is synchronous by default. To run
fsync
asynchronously, use the
async
field set to
true
:

{ fsync: 1, async: true }


The operation returns immediately. To view the status of the
fsync
operation, check the output of
db.currentOp()
.

Lock
mongod
Instance

NOTE

Changed in version 3.2:
fsync
command with the
lock
option can ensure that the data files do not change for MongoDB instances using either the MMAPv1 or the WiredTiger storage engines, thus providing consistency for the purposes of creating backups.

In previous MongoDB versions,
fsync
command with the
lock
option cannot guarantee a consistent set of files for low-level backups (e.g. via file copy
cp
,
scp
,
tar
) for WiredTiger.

The primary use of
fsync
is to lock the
mongod
instance in order to back up the files within
mongod
‘s
dbPath
. The operation flushes all data to the storage layer and blocks all write operations until you unlock the
mongod
instance.

To lock the database, use the
lock
field set to
true
:

{ fsync: 1, lock: true }


You may continue to perform read operations on a
mongod
instance that has a
fsync
lock. However, after the first write operation all subsequent read operations wait until you unlock the
mongod
instance.

Unlock
mongod
Instance

To unlock the
mongod
, use
db.fsyncUnlock()
:

db.fsyncUnlock();


见:https://docs.mongodb.com/manual/reference/command/fsync/

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐