OPTIONS
翻译或纠错本页面

MongoDB备份方案

在生产中部署MongoDB时,您应该制定一个获取和恢复备份的策略,以防止数据丢失。这里为您提供了一些备份MongoDB集群的方法:

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

You can create a backup by copying MongoDB’s underlying data files.

如果MongoDB存储数据文件的容量支持基于时间点的快照,您可以在某一特定时刻及时通过使用这些快照以创建一个MongoDB系统的备份。

文件系统快照是任何一个操作系统容量管理的特性,并不仅仅针对于MongoDB。快照的机制依赖于基础的存储系统。例如,如果您使用的是亚马逊的EBS存储,EC2的系统将会支持快照。此外,Linux和LVM管理器也可以创建快照。

为了得到一个正在运行的 mongod 进程的快照,您必须启用日志记录并且日志必须位于其它MongoDB数据文件的相同逻辑分区上。如果没有启用日志记录,就不能保证快照的一致性和可靠性。

为了得到一个分片系统一致的快照,您必须禁止均衡器,并且在差不多相同的时间上从每一个分片和配置服务器上获取一个快照。

如果您的存储系统不支持快照,您可以直接使用 cprsyns ,或者其它相似的工具来拷贝这些文件。由于拷贝多个文件并不是一个原子性的操作,您必须在拷贝这些文件之前停止对 :program:mongod 的所有写入操作。否则的话,您将会在一个不可靠的状态下拷贝这些文件。

由拷贝基础数据产生的备份不支持复制集的时间点恢复,并且在更大型的分片集群中难以管理。此外,这些备份比较庞大,因为它们包含了索引以及复制了基础的存储填充及碎片。相反地, mongodump 会产生更少的备份。

为了了解更多的信息,您可以查阅 使用文件系统快照来备份及恢复 以及 使用文件系统快照备份集群 来了解使用LVM创建快照完整的命令。此外,您还可以查阅:在Amazon EC2上对MongoDB进行备份和恢复操作

通过 mongodump 进行备份

The mongodump tool reads data from a MongoDB database and creates high fidelity BSON files. The mongorestore tool can populate a MongoDB database with the data from these BSON files. These tools are simple and efficient for backing up small MongoDB deployments, but are not ideal for capturing backups of larger systems.

mongodump and mongorestore can operate against a running mongod process, and can manipulate the underlying data files directly. By default, mongodump does not capture the contents of the local database.

mongodump only captures the documents in the database. The resulting backup is space efficient, but mongorestore or mongod must rebuild the indexes after restoring data.

连接到一个MongoDB的实例后, mongodump 将会对 mongod 的性能产生不利的影响。如果您的数据大于系统内容,查询将会使得工作集内存溢出。

为了降低 mongod 对复制集性能的影响,您可以使用 mongodump 从一个复制集的 二级 成员中获取备份。或者,您可以关闭一个二级存储,直接在数据文件中使用 mongodump 。如果您选择关闭一个二级存储来使用 mongodump 获取数据,请保证可以在它的日志文件太陈旧不得不继续复制之前完成相应的操作。

对于复制集而言, mongodump 也可以通过 --oplog 选项来支持基于时间点的特性。应用有可能在 mongodump 获取输出的同时继续修改文件。为了恢复一个使用 --oplog 创建的时间点备份,您可以使用 mongorestore 加上 --oplogReplay 选项。

如果在 mongodump 创建备份的同时,应用对数据进行修改,那么 mongodump 将会与这些应用竞争资源。

请查阅 Back Up and Restore with MongoDB Tools使用``mongodump`` 备份小集群 以及 使用数据库导出备份集群 了解更多的信息。

MongoDB管理服务(MMS)云备份

The MongoDB Management Service supports backup and restore for MongoDB deployments.

MongoDB管理服务通过读取MongoDB集群的操作日志,对MongoDB的副本集合以及分片系统进行持续备份。

MongoDB管理服务为您提供了MongoDB副本集合的时间点恢复和分片系统的相同快照。

MongoDB通过存储操作日志数据实现了时间点恢复,因此MongoDB可以在任何时刻及时恢复过去24小时之内的特定副本集。

对于分片系统而言,MongoDB管理服务并没有提供任意时间及时的恢复措施。MongoDB提供了整个分片集群周期性的一致性快照。使用MongoDB其他的备份措施是非常难实现分片集群快照的。

为了从MongoDB管理服务的备份快照中恢复一个MongoDB集群,您可以下载一个MongoDB数据文件的压缩版本,然后再重启 mongod 进程之前分发这些文件。

您可以通过 `注册MongoDB管理服务<http://mms.mongodb.com>`_ 来开始使用MongoDB管理服务备份,请在 :MongoDB管理服务:`MongoDB管理服务手册</>` 中查阅MongoDB管理服务完整的文档。

Prem备份软件中的MongoDB管理服务(MMS)

MongoDB订阅者们可以在他们自己的基础设施上安装和运行相同的核软件 MongoDB管理服务(MMS)云备份 。MongoDB管理服务的On Prem版本拥有和云版本相似的功能,并且在标准版和企业版的订阅中均能获得。

您可以通过查阅 `MongoDB 订阅<https://www.mongodb.com/products/subscriptions>`_ 页面以及 `On Prem MongoDB管理服务 手册<https://mms.mongodb.com/help-hosted/current/>`_ 来了解更多关于On Prem MongoDB管理服务的信息。

延伸阅读

使用文件系统快照来备份及恢复

一个使用系统级文件快照工具(例如: LVM 或者本地存储应用工具)创建MongoDB数据集备份的流程概述。

Restore a Replica Set from MongoDB Backups

描述从一个已归档的备份中恢复复制集的流程,例如一个 mongodump 或者 `MongoDB管理服务备份<https://mms.mongodb.com/?pk_campaign=mongodb-docs-admin-tutorials>`_ 文件。

Back Up and Restore with MongoDB Tools

为备份MongoDB数据库,将一个数据库的内容写入一个BSON(例如,二进制)转储文件流程。

备份和恢复集群

备份分片集群以及单一分片的详细过程及考量。

从意外的关闭中恢复数据

从MongoDB数据文件中恢复那些没有正常关闭或者处在不稳定状态的数据。