删除oplog local.是否安全local. *来自MongoDB快照的文件? fsyncLock()提交数据库文件中的oplog条目吗?
我目前正在做一个Mongo数据的fsyncLock() + LVM快照。 然后我挂载快照,并删除oplog local. *文件存档到S3或FTP(与Duplicity)之前。 我这样做是为了减less传输到S3的档案的大小。
当我在空副本集上的节点上进行还原时,会重新创buildoplog文件,而其他节点将从此新主节点完全重新同步。 但是我不确定在还原中是否会丢失数据,这是因为它在以前删除的oplog中,而不是写入数据库文件。
备份mongo复制时使用快照function在运行时不是个好主意。 首先,您需要在副本集中获取“主”的快照。 但问题是您的客户可能会连接错误的写入关注策略。 就像不要求大多数会在主要的oplog中留下未提交的数据一样。 即使将oplog或所有文件保存在本地数据库中,恢复时可能会遇到问题(只有一次,我的主要数据库没有任何理由正在回滚)。
我的build议(我假设你不能停止mongod)正在使用mongodump,是的,当你有一个快照,这听起来很愚蠢。 但是使用备份的真正意义在于能够恢复它们。
如果你不能使用mongodump或不想。 尝试MMS的云备份function。 这可以很容易地恢复整个副本。
编辑:另一个选项是运行一个延迟的副本成员。 这里是文档 。 其中涵盖了大部分的备份需求。 只是确定延迟时间。 通过这种方式,你不用吃运行备份/归档工具的服务器的io。