自管理部署的备份方法
在生产环境中部署MongoDB时,您应该制定在数据丢失事件中捕获和恢复备份的策略。
本页涵盖备份方法适用于自管理部署。
要了解更多关于备份方法托管在MongoDB Atlas中的部署的信息,请参阅备份数据、恢复和归档数据.
使用以下方式备份MongoDB云管理器或操作管理器
MongoDB云管理器MongoDB Cloud Manager是一款MongoDB托管备份、监控和自动化服务。MongoDB云管理器支持从图形用户界面备份和恢复MongoDB 副本集和分片集群。
MongoDB Cloud Manager
MongoDB云管理器支持备份和恢复MongoDB部署。
MongoDB云管理器MongoDB云管理器通过读取您的MongoDB部署中的oplog数据,持续备份MongoDB 副本集和分片集群。MongoDB云管理器MongoDB云管理器会定期对您的数据进行快照,并提供MongoDB副本集和分片集群的即时点恢复。
提示
与其他MongoDB备份方法相比,分片集群快照难以实现。
要开始使用MongoDB云管理器备份,请注册MongoDB云管理器。有关MongoDB云管理器的文档信息,请参阅MongoDB云管理器,请参阅MongoDB Cloud Manager文档。
Ops Manager
使用Ops Manager,MongoDB订阅者可以在自己的基础设施上安装和运行与MongoDB Cloud Manager相同的核心软件。Ops Manager是一个本地解决方案,其功能与MongoDB云管理器类似,并提供企业高级订阅。
有关Ops Manager的更多信息,请参阅MongoDB Enterprise Advanced页面和Ops Manager手册。
通过复制底层数据文件进行备份
注意
AES256-GCM加密模式使用的加密存储引擎的考虑因素
对于使用AES256-GCM
加密模式的加密存储引擎,AES256-GCM
需要每个进程使用与密钥独特的计数器块值。
配置了AES256-GCM
密码的加密存储引擎
- 从热备份中恢复
- 从4.2版本开始,如果您从“热”备份(即
mongod
正在运行)中恢复文件,MongoDB可以在启动时检测到“脏”密钥,并自动将数据库密钥滚动更新以避免IV(初始化向量)重复使用。
- 从冷备份中恢复
但是,如果您从“冷”备份(即
mongod
未运行)中恢复文件,MongoDB无法在启动时检测到“脏”密钥,IV的重复使用将使机密性和完整性保证无效。从4.2版本开始,为了避免从冷文件系统快照恢复后重复使用密钥,MongoDB增加了一个新的命令行选项
--eseDatabaseKeyRollover
。当使用--eseDatabaseKeyRollover
选项启动时,mongod
实例将配置了AES256-GCM
加密的数据库密钥滚动并退出。
一般来说,如果为MongoDB Enterprise使用基于文件系统的备份,尽可能使用“热”备份功能。
使用文件系统快照进行备份
您可以通过复制MongoDB的底层数据文件来创建MongoDB部署的备份。
如果MongoDB存储数据文件的卷支持点时间快照,您可以使用这些快照在特定时间点创建MongoDB系统的备份。文件系统快照是操作系统卷管理器的功能,并非特定于MongoDB。使用文件系统快照时,操作系统会创建一个卷快照作为数据备份的基线。快照的机制取决于底层存储系统。例如,在Linux上,逻辑卷管理器(LVM)可以创建快照。同样,Amazon的EC2存储系统EBS支持快照。
要正确地获取运行中的 mongod
进程的快照,您必须启用日志记录,并且日志必须在与其他MongoDB数据文件相同的逻辑卷上。如果没有启用日志记录,无法保证快照的一致性或有效性。
要获取分片集群的连续快照,您必须禁用均衡器,并大约在同一时间从每个分片以及配置服务器捕获快照。有关备份分片集群的信息,请参阅使用数据库转储备份自管理的分片集群。
如需更多信息,请参阅使用文件系统快照备份和恢复自托管部署和使用文件系统快照备份自托管分片集群,了解如何使用LVM创建快照的完整说明。
使用cp
或rsync
进行备份
如果您的存储系统不支持快照,您可以使用cp
、rsync
或类似的工具直接复制文件。由于复制多个文件不是一个原子操作,您必须在复制文件之前停止所有对mongod
的写入。否则,您将复制到无效状态下的文件。
由复制底层数据产生的备份不支持副本集的即时点恢复,对于较大的分片集群也难以管理。此外,这些备份的大小更大,因为它们包含索引和重复的底层存储填充和碎片。相比之下,mongodump
创建的备份更小。
使用mongodump
进行备份
mongodump
从MongoDB数据库读取数据,并创建高保真的BSON文件,mongorestore
工具可以使用这些文件来填充MongoDB数据库。mongodump
和mongorestore
是简单高效的工具,用于备份和恢复小型MongoDB部署,但并不适合捕获大型系统的备份。
mongodump
和 mongorestore
针对正在运行的 mongod
进程操作,并且可以直接操作底层的数据文件。默认情况下,mongodump
不捕获本地数据库的内容。
mongodump
只捕获数据库中的文档。生成的备份空间效率高,但 mongorestore
或 mongod
在恢复数据后必须重建索引。
当连接到 MongoDB 实例时,mongodump
可能会影响 mongod
的性能。如果您的数据大于系统内存,查询将把工作集推送到内存之外,导致页面错误。
在 mongodump
捕获输出时,应用程序可以继续修改数据。对于副本集,--oplog
选项允许在 oplog 中包含 mongodump
操作期间发生的条目。这允许相应的 mongorestore
操作回放捕获的 oplog。要使用 --oplog
恢复备份,请使用带有 --oplogReplay
选项的 mongorestore
。
但是,对于副本集,请考虑使用 MongoDB Cloud Manager 或 Ops Manager。
要备份分片集群,请参阅 使用数据库转储备份自管理的分片集群。
注意
要使用 mongodump
和 mongorestore
作为分片集群的备份策略,请参阅使用数据库转储备份自托管分片集群。
分片集群还可以使用以下协调的备份和恢复流程之一,这些流程维护跨分片的事务原子性保证
有关更多信息,请参阅使用 MongoDB 工具备份和恢复自托管部署 和 使用数据库转储备份自托管分片集群。