MongoDB 备份方法

在本页面

在生产环境中部署 MongoDB 时,您应该制定一种策略,以在发生数据丢失事件时捕获和还原备份。

使用 Atlas 备份

MongoDB Atlas是一种数据库即服务,提供完全托管的备份。

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

MongoDB Cloud Manager 是针对 MongoDB 的托管备份,监视和自动化服务。 MongoDB 云 Management 器支持从图形用户界面备份和还原 MongoDB replica setssharded clusters

MongoDB Cloud Manager

MongoDB 云 Management 器支持备份和还原 MongoDB 部署。

MongoDB Cloud Manager 通过从 MongoDB 部署中读取oplog数据来连续备份 MongoDB replica setssharded clusters。 MongoDB Cloud Manager 会按设置的时间间隔创建数据快照,还可以提供 MongoDB 副本集和分片群集的时间点恢复。

Tip

使用其他 MongoDB 备份方法很难实现分片群集快照。

要开始使用 MongoDB Cloud Manager Backup,请注册MongoDB 云 Management 器。有关 MongoDB Cloud Manager 的文档,请参阅MongoDB Cloud Manager 文档

Ops Manager

借助 Ops Manager,MongoDB 订户可以在自己的基础架构上安装并运行为MongoDB 云 Management 器提供支持的相同核心软件。 Ops Manager 是一种本地解决方案,具有与 MongoDB Cloud Manager 相似的功能,可与 Enterprise Advanced 订阅一起使用。

有关 Ops Manager 的更多信息,请参见MongoDB 企业高级版页面和运营 Manager 手册

通过复制基础数据文件进行备份

使用文件系统快照备份

您可以通过复制 MongoDB 的基础数据文件来创建 MongoDB 部署的备份。

如果 MongoDB 存储数据文件的卷支持时间点快照,则可以使用这些快照在准确的时间创建 MongoDB 系统的备份。文件系统快照是 os 卷 Management 器功能,并非特定于 MongoDB。借助文件系统快照,os 可以获取卷的快照以用作数据备份的基准。快照的机制取决于基础存储系统。例如,在 Linux 上,逻辑卷 Management 器(LVM)可以创建快照。同样,Amazon 的 EC2 EBS 存储系统支持快照。

要获取正在运行的mongod进程的正确快照,您必须启用日记功能,并且该日记必须与其他 MongoDB 数据文件位于同一逻辑卷上。如果未启用日记功能,则不能保证快照将保持一致或有效。

要获得sharded cluster的一致快照,必须禁用平衡器并在大约同一时间从每个分片和配置服务器捕获快照。

有关更多信息,请参见使用文件系统快照备份和还原使用文件系统快照备份分片群集,以获取有关使用 LVM 创建快照的完整说明。

使用 cp 或 rsync 备份

如果您的存储系统不支持快照,则可以使用cprsync或类似工具直接复制文件。由于复制多个文件不是原子操作,因此必须在复制文件之前停止所有对mongod的写操作。否则,您将以无效状态复制文件。

通过复制基础数据生成的备份不支持replica sets的时间点恢复,并且对于较大的分片群集很难 Management。此外,这些备份更大,因为它们包括索引以及重复的基础存储填充和碎片。相反,mongodump创建的备份较小。

使用 mongodump 备份

mongodump从 MongoDB 数据库读取数据,并创建高保真 BSON 文件,mongorestore工具可使用该文件来填充 MongoDB 数据库。 mongodumpmongorestore是用于备份和还原小型 MongoDB 部署的简单而有效的工具,但对于捕获大型系统的备份而言并不理想。

mongodumpmongorestore针对正在运行的mongod进程进行操作,并且可以直接操纵基础数据文件。默认情况下,mongodump不捕获local database的内容。

mongodump仅捕获数据库中的文档。生成的备份节省空间,但是mongorestoremongod必须在还原数据后重建索引。

连接到 MongoDB 实例后,mongodump会对mongod的性能产生不利影响。如果您的数据大于系统内存,则查询会将工作集推出内存,从而导致page faults

mongodump捕获输出时,应用程序可以 continue 修改数据。对于副本集,mongodump提供--oplog选项以将在mongodump操作期间出现的oplog条目包括在其输出中。这允许相应的mongorestore操作重播捕获的操作日志。要恢复使用--oplog创建的备份,请将mongorestore--oplogReplay选项一起使用。

但是,对于副本集,请考虑MongoDB 云 Management 器Ops Manager

有关更多信息,请参见使用 MongoDB 工具备份和还原使用数据库转储备份分片群集