比较MongoDB的备份方法

我在调查MongoDB的备份方法时,发现了MongoDB公司员工的博客中有一个简洁的总结,因此我将其翻译并介绍给大家。如果你擅长英语,请阅读原文(※由于匆忙写作可能存在翻译错误)。

比较了MongoDB备份策略


在MongoDB中进行备份有三种主要方法。

    • mongodump:MongoDB付属のユーティリティを使用する方法。

 

    • データファイルのコピー:LinuxのLVMやAWSのEBSなどを使用してファイルシステムのスナップショットを取得する方法。

 

    MongoDBの管理サービス(MMS):MMSのバックアップ機能を利用する方法。

有关每个事项的详细信息如下所示。

使用mongodump命令

mongodump是MongoDB附带的工具,用于备份MongoDB的数据。mongodump可以备份整个数据库、集合或者查询结果。通过备份oplog,可以生成一致性的数据快照。备份完成后,可以使用mongorestore将数据恢复到新的或现有的数据库中。mongorestore从由mongodump生成的BSON数据库备份中导入内容并重新播放oplog。

mongodump是一种直接的方法,它有一个优点,就是可以生成基于特定需求进行过滤的备份。在小型系统中,它是足够好的解决方案,但不适用于大型系统。它会施加很大的负载,因此不易扩展。此外,它不是增量备份的方法,因此在每个快照时间点都需要完整的转储,并且会消耗大量资源。随着系统规模的增大,我们需要考虑对文件系统快照或类似MMS的对系统影响较小的解决方案。

而且,如果在小型系统上执行mongodump,通常不会有太大问题,但在大规模的分片系统上执行时,会带来一些复杂性。

数据文件复制

通过复制用于保存数据的文件,可以对MongoDB进行备份。为了获取数据库的一致性快照,需要停止对数据库的所有写入操作,并使用标准文件系统的复制工具,或者生成整个文件系统的快照(如果卷管理器支持)。

例如,Linux LVM可以快速高效地生成备份和恢复目的下通过复制文件生成的快照。然而,为确保快照的逻辑一致性,需要启用MongoDB的日志功能。

在进行完整备份并进行恢复时,由于备份是在存储级别进行的,因此文件系统的快照比mongodump更有效。然而,与mongodump不同,这种方法在备份时无法灵活地指定特定的数据库或集合,因此可以说是一种较为粗略的方法。使用这种方法可能会生成大型的备份文件,并且备份操作的时间可能会变长。

随着系统的规模和复杂性增加,进行文件系统快照的操作需要持续的维护。为了调整多个副本集之间的备份(尤其是在分片系统中),需要DevOps专业知识来保证各个组件之间的一致性。

“MongoDB管理服务 (MMS)”

MMS是一项完全托管的服务,为MongoDB提供持续的在线备份。在使用MongoDB的环境中安装备份代理后,将对安全且冗余的MongoDB数据中心进行初始同步。随后,为了进行持续备份,MMS将发送经过加密和压缩的oplog。

默认情况下,MMS每6小时进行一次快照,并保留24小时的oplog。快照的计划和保留策略可以根据需求进行设置。此外,还具备灵活性,以排除非关键任务的数据库和集合。

对于复制副本集,可以通过自定义点时间快照来在过去24小时内的任意时刻进行恢复。在分片系统中,MMS每6小时生成一次具有一致性的集群快照。另外,为了对分片集群进行精细恢复,可以使用检查点选项。

由于MMS仅读取oplog,因此对持续性能的影响将被最小限度地减少。

除了云服务,MMS还可作为MongoDB的标准或企业订阅的一部分提供本地软件供使用。

广告
将在 10 秒后关闭
bannerAds