【译】MongoDB的备份方法

难忘的国庆假期,家人来北京玩,虽然很累,但是还是感觉到了满满的幸福。

在生产系统中部署MongoDB时,我们应该有一个用于获取和恢复备份的策略,以防止数据丢失事故。

使用Altas备份

MongoDB Altas是一个能够提供完全可控备份的数据库即服务。

使用MongoDB Cloud Manager或者Ops Manager 进行备份

MongoDB Cloud Manager是一个MongoDB主机的备份、监控以及自动的服务。MongoDB Cloud Manager支持在一个图形化的用户接口备份和恢复MongoDB复制集和分片集群。

MongoDB Cloud Manager

MongoDB Manager支持备份和恢复MongoDB部署。

MongoDB Cloud Manager通过从我们的MongoDB部署中读取操作日志数据来持续备份MongoDB复制集和分片集群。

贴士:使用其它MongoDB备份方法实现分片集群快照是非常困难的。

如果需要开始使用MongoDB Cloud Manager备份,可以在这里进行注册 。可以在官方文档中进行查阅了解更多关于MongoDB Cloud Manager的信息。

Ops Manager

通过使用Ops Manager,MongoDB的订阅者们可以在他们的基础架构上安装和运行支持MongoDB Cloud Manager的相同核心软件。Ops Manager是一个和MongoDB Cloud Manager相同功能的预制解决方案,与MongoDB高级企业版订阅一起提供。

如果需要了解更多关于Ops Manager的信息,请查阅MongoDB高级企业版的页面以及Ops Manager的说明。

通过拷贝基础的数据文件进行备份

使用文件系统快照进行备份

我们可以通过复制MongoDB的基础数据文件来对MongoDB部署创建一个备份。

如果MongoDB存储数据文件的磁盘支持实时快照,我们可以使用及时地在某一个特定的时间使用这些快照来创建MongoDB系统的备份。文件系统快照是操作系统磁盘管理的特性,不仅仅针对MongoDB。通过使用文件系统快照,操作系统为磁盘生成一个快照用于数据备份的一个基线。快照的机制根据其下面的存储系统而定。例如,在Linux系统中,逻辑磁盘管理器(LVM)可以创建快照。同样地,Amazon的EBS存储系统EC2也支持快照。

想要获得一个运行的mongod进程的正确快照,我们必须启用日志并且日志必须位于和其它MongoDB数据文件相同的逻辑磁盘上。如果没有开启日志,那么久没有办法保证快照是一致的或者是有效的。

想要得到分片集群的一致快照,我们必须禁用均衡器,并且及时从每个集群以及配置服务器上获取一个快照。

查阅使用文件系统快照备份和恢复和使用LVM来创建快照的使用我文件系统快照备份分片集群完整指令了解更多信息。

使用cp或者rsync进行备份

如果我们的存储系统不支持快照,我们可以直接使用cprsync或者一个相似的工具直接拷贝这些文件。由于拷贝多个文件 并不是一个原子性的操作,我们必须在拷贝文件之前停止所有对mongod的写操作。否则的话,我们将会拷贝到非有效状态的文件。

通过拷贝基础数据生成的备份不支持复制集的时间点恢复,并且对于更大型的分片集群来说管理更加困难。此外,这些备份数量非常庞大,因为它们包含索引和复制基础的存储扩充和分割。相反地,mongodump创建更小的备份。

使用mongodump备份

mongodump从MongoDB数据库中读取数据并且创建mongorestore工具可使用的、高保真的BSON文件来恢复MongoDB数据库。mongodumpmongorestore都是非常简单和高效的工具用于备份和恢复小的MongoDB部署,但是对于获取更大型系统的备份来说并不是更理想的选择。

mongodumpmongorestore在一个运行的mongod进程上运行,并且可以直接操作基础的数据文件。默认地,mongodump不会获取local数据库的内容。

mongodump只会获取数据库中的文档。最后获得的备份在空间上是非常搞笑的,但是在恢复数据之后mongorestoremongod必须重建索引。

在连接到MongoDB实例之后,mongodump可能会负面影响mongod性能。如果我们的数据大于系统内存,查询将会将工作集推出内存,造成分页错误。

mongodump获取输出的时候,应用还会持续修改数据。对于复制集而言,mongodump提供了--oplog选项来将发生在mongodump操作期间的操作包含在输出的日志条目中。这就运行相应的mongorestore操作可以重放获取的操作日志。可以使用mongorestore--oplogReplay选项来恢复使用--oplog选项创建的备份。

然而,对于复制集成员来说,考虑MongoDB Cloud Manager或者Ops Manager。

查阅使用MongoDB 工具备份和恢复使用数据库Dumps备份分片集群了解更多信息。

参考文献

打赏

mickey

记录生活,写给几十年后的自己。