MongoDB备份-只快照dbpath卷是否安全



假设:单个MongoDB实例。

我测试了一个备份和恢复,只使用存储我的数据的卷(dbpath)的EBS快照,而不是/logs或/journal卷。恢复似乎工作正常,并且数据可用。

这样做有什么风险或负面影响吗?换句话说,如果我没有/logs和/journal卷的备份快照,我会丢失什么吗?

如果日志和dbpath位于独立的EBS卷上,则进行备份

如果/journal目录与dbpath位于不同的EBS卷上,则获得一致备份的唯一方法是使用db.fsyncLock()以确保没有挂起的写入操作。fsyncLock()命令的副作用是阻止对数据库的所有写入,因此通常只有在从副本集中的辅助备份时才希望使用此方法(而不是根据问题描述中的假设,使用唯一的mongod)。

如果日志和dbpath位于相同的EBS卷上,则进行备份

如果journaldbpath位于同一EBS卷上,则可以使用EBS快照获得一致备份。

您需要备份日志目录吗

严格来说,您不需要备份日志。出于故障排除的目的,轮换日志并保留几天的最新日志文件可能很有用。

我测试了一个备份和恢复,只使用存储我的数据的卷(dbpath)的EBS快照,而不是/logs或/journal卷。恢复似乎工作正常,并且数据可用。

这种方法会很好,直到它不是——当你想从备份中恢复,并意识到你最后的n备份在你一次尝试一个时不可用,或者可能在你认为恢复的数据库正常几天后遇到意外错误的那一天。如果你不备份日志文件,这实际上与在没有日志的情况下运行相同,并且推荐的恢复过程包括在重新启动之前运行修复。风险与其说是尚未从日志中清除的更改,不如说是在写入数据文件的过程中断电,使事物处于不一致的状态,没有恢复信息(也就是日志),这是一个不吉利的时机。

如果要进行备份,请务必遵循正确的程序以消除不必要的风险。

有关更多信息,请参阅MongoDB手册中的EC2备份和恢复。

最新更新