在使用mongodump创建转储之前是否有必要在MongoDB中执行fsyncLock?

时间:2016-10-05 08:57:02

标签: mongodb mongodump

2.6 docs中明确指出在运行db.fsyncLock()时不应使用mongodump

  

不要将mongodump与db.fsyncLock()一起使用。

但是自3.0 version of the docs以来这些信息已经消失了。实际上根本没有关于来自3.0的mongodump文档中的锁的信息。

我的猜测是,在使用--oplog时,没有必要致电db.fsyncLock(),但我并非100%确定:

  

如果没有--oplog,则在转储期间有写操作   操作,转储不会反映单个时刻。变化   在更新过程中对数据库进行的操作会影响输出   备份。

你能在这帮我吗?是否有必要在使用mongodump创建转储之前在MongoDB中执行fsyncLock?

谢谢!

1 个答案:

答案 0 :(得分:3)

  

我的猜测是,当使用--oplog时,没有必要调用db.fsyncLock()

以前使用3.0之前的MongoDB版本时,在执行db.fsyncLock()不得致电mongodump,而您现在不需要它。关于未将fsyncmongodump was removed at several places at once一起使用的警告,因此它看起来不像是疏忽而是故意改变。

db.fsyncLock()文档指出

  

此功能锁定数据库并为备份操作创建一个窗口。

但这只是Backup with cp or rsync所必需的。 Back Up and Restore with MongoDB Tools Tutorial没有提及任何额外的锁定和明确提及使用--oplog参数,您将获得一致的备份:

  

使用mongodump的--oplog选项收集oplog条目,以构建副本集中数据库的时间点快照。使用--oplog,mongodump会复制源数据库中的所有数据以及从备份过程开始到结束的所有oplog条目。此操作与mongorestore --oplogReplay一起使用,可以恢复反映mongodump完成创建转储文件时的特定时刻的备份。

结论:不,您不需要致电db.fsyncLock()