在2.6 docs中明确指出在运行db.fsyncLock()
时不应使用mongodump
:
不要将mongodump与db.fsyncLock()一起使用。
但是自3.0 version of the docs以来这些信息已经消失了。实际上根本没有关于来自3.0的mongodump
文档中的锁的信息。
我的猜测是,在使用--oplog
时,没有必要致电db.fsyncLock()
,但我并非100%确定:
你能在这帮我吗?是否有必要在使用mongodump创建转储之前在MongoDB中执行fsyncLock?如果没有--oplog,则在转储期间有写操作 操作,转储不会反映单个时刻。变化 在更新过程中对数据库进行的操作会影响输出 备份。
谢谢!
答案 0 :(得分:3)
我的猜测是,当使用--oplog时,没有必要调用db.fsyncLock()
以前使用3.0之前的MongoDB版本时,在执行db.fsyncLock()
时不得致电mongodump
,而您现在不需要它。关于未将fsync
与mongodump
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()
。