【问题标题】:MongoDB Backups - Is it safe to snapshot only the dbpath volume?MongoDB 备份 - 仅对 dbpath 卷进行快照是否安全?
【发布时间】:2013-12-31 23:06:05
【问题描述】:

假设:单个 MongoDB 实例。

我已经使用 EBS 快照测试了备份和还原,该快照仅使用存储我的数据的卷 (dbpath) 而不是 /logs 或 /journal 卷。恢复似乎工作正常,数据可用。

这样做有任何风险或不利因素吗?换句话说,如果我没有 /logs 和 /journal 卷的备份快照,我会丢失任何东西吗?

【问题讨论】:

  • 日志无关紧要,但日志很重要。在非主副本上运行备份也是一个好主意,这样您就可以在运行快照之前锁定卷。
  • @datasage 感谢您的回复! /journal 什么时候重要?我的意思是,我能够仅使用 /data 成功备份和恢复。
  • 有一个非常小的时间窗口(应该是 30 毫秒),其中一个操作的数据可能存在于日志中,但尚未存在于数据文件中。但是如果在启动快照之前锁定数据库,应该没问题。
  • 好的 - 所以如果我打算每小时备份一次(这意味着我在灾难中最多放弃 60 分钟的数据),那么 30 毫秒的日志可能无关紧要,对吧?
  • 归结为写操作的数量。如果数量相当低,那么错过日记的机会就很小。如果您有大量写入,则概率会增加。

标签: mongodb amazon-ec2


【解决方案1】:

如果日志和 dbpath 在单独 EBS 卷上,则进行备份

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

如果日志和 dbpath 在相同 EBS 卷上,则备份

如果journaldbpath 在同一个EBS 卷上,您可以获得consistent backup using EBS snapshots

需要备份日志目录吗?

严格来说,您不需要备份日志。出于故障排除目的,rotate the logs 并保留几天的最近日志文件会很有用。

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

这种方法会很好,直到它不是——当你想要从备份中恢复并意识到你最后的 n 个备份在你尝试它们时无法使用的那一天一次,或者在您认为恢复的数据库正常后几天可能会遇到意外错误。如果您不备份日志文件,这实际上与在没有日志的情况下运行相同,并且recommended recovery procedures 涉及在重新启动之前运行修复。风险不在于尚未从日志中刷新的更改,而在于如果在写入数据文件的过程中断电导致事情处于不一致状态而没有恢复信息(又名:杂志)。

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

有关更多信息,请参阅 MongoDB 手册中的EC2 Backup and Restore

【讨论】:

  • 如果您关心期刊,这个建议似乎是正确的。我的问题集中在没有相应日志的情况下备份是否有效,答案显然(通过实践)是肯定的。我只从 /data 卷恢复了我们的数据库,并且每次都运行良好。使用日志的问题似乎是您是否关心故障(或备份)时的一致性,在我的情况下这并不重要。添加 fsynclock 需要我的数据库处于脱机状态,这在单实例场景中是不可取的。
  • 如果您启用了日志功能并且没有在备份中包含日志,那么对于有效备份来说答案不是“是”,而是“可能”。您的数据库可能已损坏,即使恢复时“似乎正常”,这也可能不明显(因此需要运行修复的额外步骤)。如果您关心备份和数据完整性,则应该正确执行。您的问题是“是否有任何风险”,答案是“肯定”:)。 journal exists for durability and crash recovery,忽略它会删除该保证。
  • 说得好。考虑到这一点,大容量高可用性设备如何避免他们的网站/应用程序在快照所需的几秒钟内停机?现在我每小时运行一次备份,如果我使用 fsynclock,我每次都会使数据库离线几秒钟。想法?
  • 高可用性备份的常用方法是使用 EBS/文件系统快照或副本集(从辅助节点备份)。如果您的数据和日志目录位于同一卷上,则 EBS/文件系统快照要求您 fSyncLock() 以获得一致的备份。还有像 MongoDB Backup Service 这样的商业选项,它提供异地备份和时间点恢复。
猜你喜欢
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多