MongoDB-CN-Manual
  • MongoDB中文手册|官方文档中文版
  • MongoDB用户手册说明
  • MongoDB简介
    • 入门
    • 数据库和集合
      • 视图
      • 按需物化视图
      • 封顶集合
      • 时间序列集合
    • 文档
    • BSON类型
      • Comparison and Sort Order
      • MongoDB Extended JSON (v2)
      • MongoDB Extended JSON (v1)
  • 安装 MongoDB
    • 安装MongoDB社区版
      • 在Linux上安装MongoDB社区版
      • 在macOS上安装MongoDB社区版
      • 在Windows上安装MongoDB社区版
    • 安装MongoDB企业版
      • 在Linux上安装MongoDB企业版
      • 在Mac OS安装MongoDB企业版
      • 在Windows安装MongoDB企业版
      • 使用Docker安装MongoDB企业版
    • 将社区版MongoDB升级到企业版MongoDB
    • 验证MongoDB软件包的完整性
  • The mongo Shell
    • 配置mongo Shell
    • 使用 mongo Shell帮助
    • 为mongo Shell编写脚本
    • mongo Shell中的数据类型
    • mongo Shell 快速参考
  • MongoDB CRUD操作
    • 插入文档
      • 插入方法
    • 查询文档
      • 在mongo Shell中迭代游标
      • 从查询返回的项目字段
      • 查询嵌入式文档数组
      • 查询数组
      • 查询空字段或缺少字段
      • 查询嵌入/嵌套文档
    • 更新文档
      • 更新方法
      • 聚合管道更新
    • 删除文档
      • 删除方法
    • 地理空间查询
      • 用地理空间查询查找餐馆
      • GeoJSON对象
    • 批量写入操作
    • 可重试写入
    • 可重试读取
    • SQL到MongoDB的映射图表
    • 文本搜索
      • 文本索引
      • 文本索引操作
      • 集合管道中的文本索引
      • 文本索引语言
    • Read Concern读关注
      • 读关注 "local"
      • 读关注 "available"
      • 读关注 "majority"
      • 读关注 "linearizable"
      • 读关注 "snapshot"
    • Write Concern写关注
    • MongoDB CRUD概念
      • 原子性和事务
      • 读隔离性,一致性和近因性
        • 因果一致性和读写关注
      • 分布式查询
      • 通过findAndModify进行线性化读取
      • 查询计划
      • 查询优化
        • 评估当前操作性能
        • 优化查询性能
        • 写操作性能
        • 说明结果
      • 分析查询表现
      • Tailable 游标
  • MongoDB聚合
    • 聚合管道
      • 聚合管道优化
      • 聚合管道限制
      • 聚合管道和分片集合
      • 使用 Zip Code 数据集进行聚合
      • 使用用户首选项数据进行聚合
    • Map-Reduce
      • Map-Reduce 和分片集合
      • Map-Reduce 并发
      • Map-Reduce 示例
      • 执行增量 Map-Reduce
      • 对 Map Function 进行故障排除
      • 排除 Reduce Function 问题
      • Map-Reduce转换到聚合管道
    • 聚合参考
      • 聚合管道快速参考
      • 聚合命令
      • 聚合命令对比
      • 聚合表达式中的变量
      • SQL 到聚合映射图表
  • MongoDB数据模型
    • 数据建模介绍
    • 模式验证
    • 数据模型设计
      • 一对一嵌套关系模型
  • MongoDB事务
  • MongoDB事务
    • 驱动程序 API
    • 生产注意事项
    • 生产注意事项 (分片集群)
    • 事务操作
  • MongoDB索引
    • 单字段索引
    • 复合索引
    • 多键索引
      • 多键索引范围
    • 文本索引
      • 为文本索引指定语言
      • 指定文本索引的名称
      • 用权重控制搜索结果
      • 限制扫描条目的数量
    • 通配符索引
      • 通配符索引限制
    • 2dsphere 索引
      • 查询一个2dsphere索引
    • 2d 索引
      • 创建一个2d索引
      • 查询一个2d索引
      • 2d索引内部
      • 使用球面几何计算距离
    • geoHaystack 索引
      • 创建Haystack索引
      • 查询Haystack索引
    • 哈希索引
    • 索引特性
      • TTL 索引
        • 通过设置TTL使集合中的数据过期
      • 唯一索引
      • 部分索引
      • 不分大小写索引
      • Sparse 索引
    • 在填充的集合上建立索引
      • 在副本集上建立滚动索引
      • 在分片群集上建立滚动索引
    • 索引交集
    • 管理索引
    • 衡量索引使用
    • 索引策略
      • 创建索引来支持查询
      • 使用索引对查询结果进行排序
      • 确保索引适合RAM
      • 创建以确保选择性的查询
    • 索引参考
  • MongoDB安全
    • 安全检查列表
    • 启用访问控制
    • 身份验证
      • 用户
        • 添加用户
        • 权限认证机制
          • SCRAM
            • 用x.509证书来认证客户端
    • 审计
      • 配置审计过滤器
      • 配置审计
      • 系统事件审计消息
    • 网络和配置强化
    • 安全参考
      • system.roles集合
      • system.users集合
      • 资源文档
      • 权限操作
    • 附录
      • 附录-A-用于测试的 OpenSSl CA 证书
      • 附录-B-用于测试的OpenSSL服务器证书
      • 附录-C-用于测试的OpenSSL客户端证书
  • Change Streams变更流
    • 变更流生产建议
    • 变更事件
  • MongoDB复制
    • 副本集成员
    • 副本集日志
    • 副本集数据同步
    • 副本集部署架构
    • 副本集成员配置教程
    • 副本集维护教程
    • MongoDB复制参考
  • MongoDB分片
    • 分片集群组件
    • 分片键
    • 哈希分片
    • 范围分片
    • 区
      • 管理分片区
      • 按位置细分数据
      • 用于更改SLA或SLO的分层硬件
      • 按应用或客户细分数据
      • 仅插入工作负载的分布式本地写入
      • 管理分片区
    • 使用块进行数据分区
      • 在分片集群中拆分数据块
    • 分片管理
      • 查看集群设置
    • 重启一个分片集群
    • [把一个分片集群迁移到不同的硬件](fen-pian/migrate-a -sharded-cluster-to-different-hardware.md)
    • 分片参考
  • MongoDB管理
    • 产品说明
    • 操作检查列表
    • 开发检查列表
    • 配置和维护
    • 性能
    • 数据中心意识
      • MongoDB部署中的工作负载隔离
      • 区
        • 管理分片区
        • 按位置细分数据
        • 用于更改SLA或SLO的分层硬件
        • 按应用或客户细分数据
        • 仅插入工作负载的分布式本地写入
        • 管理分片区
    • MongoDB备份方法
    • MongoDB监控
  • MongoDB存储
    • 存储引擎
      • WiredTiger 存储引擎
      • 内存存储引擎
    • 日志记录
      • 管理日志记录
        • GridFS
        • FAQ:MongoDB 存储
  • MongoDB参考
    • 运算符
      • 查询与映射运算符
        • 比较查询运算符
          • $eq
          • $gt
          • $gte
          • $in
          • $lt
          • $lte
          • $ne
          • $nin
        • 逻辑查询运算符
          • $and
          • $not
          • $nor
          • $or
        • 元素查询运算符
        • 评估查询运算符
        • 地理空间查询运算符
        • 数组查询运算符
        • 按位查询运算符
        • $comment
        • 映射运算符
      • 更新运算符
        • 字段更新运算符
        • 数组更新运算符
        • 按位更新运算符
      • 聚合管道阶段
      • 聚合管道操作符
        • $abs (aggregation)
        • $acos (aggregation)
        • $acosh (aggregation)
        • $add (aggregation)
        • $addToSet (aggregation)
        • $allElementsTrue (aggregation)
        • $and (aggregation)
        • $anyElementTrue (aggregation)
        • $arrayElemAt (aggregation)
        • $arrayToObject (aggregation)
        • $asin (aggregation)
        • $asinh (aggregation)
        • $atan (aggregation)
        • $atan2 (aggregation)
        • $atanh (aggregation)
        • $avg (aggregation)
        • $ceil (aggregation)
        • $cmp (aggregation)
        • $concat (aggregation)
        • $concatArrays (aggregation)
        • $cond (aggregation)
        • $convert (aggregation)
        • $cos (aggregation)
        • $dateFromParts (aggregation)
        • $dateToParts (aggregation)
        • $dateFromString (aggregation)
        • $literal (aggregation)
      • 查询修饰符
    • 数据库命令
      • 聚合命令
      • 地理空间命令
      • 查询和写操作命令
      • 查询计划缓存命令
      • 认证命令
      • 用户管理命令
      • 角色管理命令
      • 复制命令
      • 分片命令
      • 会话命令
      • 管理命令
      • 诊断命令
      • 免费监控命令
      • 系统事件审计命令
    • mongo Shell 方法
      • 集合方法
        • db.collection.aggregate()
        • db.collection.bulkWrite()
        • db.collection.copyTo()
        • db.collection.count()
        • db.collection.countDocuments()
        • db.collection.estimatedDocumentCount()
        • db.collection.createIndex()
        • db.collection.createIndexes()
        • db.collection.dataSize()
        • db.collection.deleteOne()
        • db.collection.deleteMany()
        • db.collection.distinct()
        • db.collection.drop()
        • db.collection.dropIndex()
        • db.collection.dropIndexes()
        • db.collection.ensureIndex()
        • db.collection.explain()
        • db.collection.find()
        • db.collection.findAndModify()
        • db.collection.findOne()
        • db.collection.findOneAndDelete()
        • db.collection.findOneAndReplace()
        • db.collection.findOneAndUpdate()
        • db.collection.getIndexes()
        • db.collection.getShardDistribution()
        • db.collection.getShardVersion()
        • db.collection.insert()
        • db.collection.insertOne()
        • db.collection.insertMany()
        • db.collection.isCapped()
        • db.collection.latencyStats()
        • db.collection.mapReduce()
        • db.collection.reIndex()
        • db.collection.remove()
        • db.collection.renameCollection()
        • db.collection.replaceOne()
        • db.collection.save()
        • db.collection.stats()
        • db.collection.storageSize()
        • db.collection.totalIndexSize()
        • db.collection.totalSize()
        • db.collection.update()
        • db.collection.updateOne()
        • db.collection.updateMany()
        • db.collection.watch()
        • db.collection.validate()
    • MongoDB中的限制与阈值
    • MongoDB系统集合
    • 词汇表
    • 默认的MongoDB端口
    • 默认的MongoDB读/写关注
    • 服务器会话
  • MongoDB FAQ
    • FAQ: MongoDB基础知识
    • FAQ: MongoDB索引
    • FAQ: MongoDB并发
    • FAQ: MongoDB分片
    • FAQ: MongoDB复制和副本集
    • FAQ: MongoDB存储
    • FAQ: MongoDB诊断
  • MongoDB 版本管理
  • 联系我们
    • Tapdata Cloud
    • MongoDB中文社区
    • 社区合作伙伴—锦木信息
由 GitBook 提供支持
在本页
  • 使用 Atlas 进行备份
  • 使用 MongoDB Cloud Manage 或者 Ops Manager
  • MongoDB Cloud Manager
  • Ops Manager
  • 通过复制基础数据文件进行备份
  • 使用文件系统快照备份
  • 使用 cp 或者 rsync 备份
  • 使用 mongodump 备份
  1. MongoDB管理

MongoDB备份方法

上一页管理分片区下一页MongoDB监控

最后更新于3年前

在本页

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

使用 Atlas 进行备份

MongoDB 官方云服务 MongoDB Atlas 提供2种完全托管的备份方法

  1. ,它对群集中的数据进行增量备份,从而确保备份通常仅比操作系统落后几秒钟。利用 Atlas 连续备份,您可以从存储的快照或最近24小时内的选定时间点还原。您还可以查询连续备份快照。

  2. ,使用集群的云服务提供商的原生快照功能提供的本地化的备份存储。

使用 MongoDB Cloud Manage 或者 Ops Manager

MongoDB Cloud Manager 是针对 MongoDB 的托管备份,监控和自动化服务。 支持用户在图形化界面操作备份和还原 MongoDB 和.

MongoDB Cloud Manager

支持 MongoDB 部署的备份和恢复

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

提示

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

Ops Manager

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

使用 AES256-GCM 的加密存储引擎的注意事项

  • 从热备份还原

  • 从冷备份还原

提示

  • In general, if using filesystem based backups for MongoDB Enterprise 4.2+, use the “hot” backup feature, if possible.

  • 通常,如果对 MongoDB Enterprise 4.2+ 使用基于文件系统的备份,情尽可能使用“热”备份功能。

  • For MongoDB Enterprise versions 4.0 and earlier, if you use AES256-GCM encryption mode, do not make copies of your data files or restore from filesystem snapshots (“hot” or “cold”).

  • 对于 MongoDB Enterprise 4.0 及更早版本,如果您使用 AES256-GCM 加密模式,请不要复制数据文件或从文件系统快照(“热”或“冷”)还原。

使用文件系统快照备份

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

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

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

使用 cp 或者 rsync 备份

使用 mongodump 备份

注意

对于具有正在进行的分片事务的 4.2+ 版本分片集群,请使用以下一个协调的备份和还原过程,这些过程_确实维护_了跨分片事务的原子性保证:

译者:谢伟成

要开始使用 MongoDB Cloud Manager 备份,请注册 。有关 MongoDB Cloud Manager 的文档,请参阅 。

借助 Ops Manager,MongoDB 用户可以在自己的基础架构上安装和运行驱动 的相同核心软件。Ops Manager 是一种本地解决方案,具有与 MongoDB Cloud Manager 相似的功能,可与订阅的企业版高级功能一起使用。

For more information about Ops Manager, see the page and the .

有关更多 Ops Manager,请看 和 .

对于使用 AES256-GCM 加密模式的,AES256-GCM 要求每个进程都使用唯一的计数器块值和密钥。

对于配置了 AES256-GCM 密码:

从 4.2 开始,如果您通过“热”备份(即 正在运行)获取的文件进行还原,MongoDB 可以在启动时检测“脏”密钥并自动翻转数据库密钥以避免IV(初始化向量)重用。

但是, 如果您通过“冷”备份获取的文件恢复(即 没有在运行),则MongoDB无法在启动时检测到“脏”密钥,并且IV的重用会使机密性和完整性保证无效。

从4.2开始, 为了避免从冷的文件系统快照还原后重新使用密钥,MongoDB 添加了一个新的命令行选项 . 使用 选项启动, 实例将回滚使用 AES256-GCM 密码配置的数据库密钥,然后退出。

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

欲了解更多信息,请参阅 和 使用 LVM 创建快照的完整说明。

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

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

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

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

仅捕获数据库中的文档。生成的备份是节省空间的,但是 或 恢复数据后,必须重建索引。

当连接一个 MongoDB 实例时,可能会对的性能产生不利影响。如果您的数据大于系统内存,则查询会将工作集推出内存,从而导致页面错误。

应用程序可以在 捕获输出的同时继续修改数据,对于副本集,当进行 操作时, 提供 选项来包括它输出的 实体。这允许响应的恢复捕获的 oplog。要恢复创建时带了选项的备份,进行操作是需要有 选项。

但是对于副本集,请考虑使用 或 。

和 不能作为正在进行分片事务的4.2+版本分片群集的备份策略的一部分,因为使用创建的备份_不会保持_跨分片事务的原子性保证。

,

, or 或

.

有关更多信息请参阅 和

使用 Atlas 备份
使用 MongoDB Cloud 或者 Ops Manager 备份
通过拷贝基础数据文件备份
使用 mongodump 备份
连续备份
云提供商快照
MongoDB Cloud Manager
副本集
分片集群
MongoDB Cloud Manager
操作日志
副本集
分片群集
MongoDB Cloud Manager
MongoDB Cloud Manager 的文档
MongoDB Cloud Manager
MongoDB Enterprise Advanced
Ops Manager Manual
MongoDB 企业版高级高级功能
Ops Manager 操作手册
加密存储引擎
加密存储引擎
mongod
mongod
--eseDatabaseKeyRollover
--eseDatabaseKeyRollover
mongod
分片群集
使用文件系统快照备份和恢复
使用文件系统快照备份分片集群
mongod
副本集
分片群集
mongodump
mongorestore
mongodump
mongorestore
mongodump
mongorestore
mongod
mongodump
mongorestore
mongod
mongodump
mongod
mongodump
mongodump
mongodump
--oplog
oplog
mongorestore
--oplog
mongorestore
--oplogReplay
MongoDB Cloud Manager
Ops Manager
mongodump
mongorestore
MongoDB Atlas
MongoDB Cloud Manager
MongoDB Ops Manager
Back Up and Restore with MongoDB Tools
Back Up a Sharded Cluster with Database Dumps