標籤:rds 釋放 rpo https highlight sub tee cond versions
能不能把資料暴力的刷到硬碟上,當然是可以的,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:
| Field |
Type |
Description |
fsync |
integer |
Enter “1” to apply fsync. |
async |
boolean |
Optional. Runs fsync asynchronously. By default, the fsync operation is synchronous. |
lock |
boolean |
Optional. Locks mongod instance and blocks all write operations. |
ExamplesRun Asynchronously
The fsync operation is synchronous by default. To run fsync asynchronously, use the async field set totrue:
{ fsync: 1, async: true }
The operation returns immediately. To view the status of the fsync operation, check the output ofdb.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‘sdbPath. The operation flushes all data to the storage layer and blocks all write operations until you unlock themongod 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/
mongodb給我們提供了fsync+lock機制把資料暴力的刷到硬碟上