Docs 菜单
Docs 主页
/
MongoDB 数据库工具
/

mongorestore 行为、访问和使用

在此页面上

  • 行为
  • 必需的访问权限
  • 在备份策略中的用法
  • 了解详情

警告

字段中带有 $ 前缀的数据转储和恢复冲突

从MongoDB 5.0开始,文档字段名称可以以美元字符 ( $ ) 为前缀。 但是, mongodumpmongorestore不适用于集合选项中以美元字符为前缀的字段名称。

MongoDB扩展JSON (v 2 )无法区分类型包装器和与类型包装器同名的字段。 如果相应的BSON表示形式可能包含$前缀键,请勿使用扩展JSON格式。 DBRefs机制是该一般规则的例外。

使用 mongorestore 加载由 mongodump 创建的数据文件时,源部署和目标部署的 MongoDB 版本必须是以下任一版本:

  • 同一主要版本。

  • 同一特征兼容性版本。

例如,如果转储是通过运行版本 4.4 的 MongoDB 部署创建的,那么恢复到的 MongoDB 部署也必须运行版本 4.4 或将其 FCV 设置为 4.4

如要更改特征兼容性版本,请参阅 setFeatureCompatibilityVersion

注意

您可以将从 mongodump 生成的 BSON 文件恢复到与源部署运行相同或更新版本的 MongoDB 部署中。然而,在较新版本的部署中恢复文件并不是升级部署的推荐方法。要了解如何升级部署,请参阅升级文档

此保证不适用于元数据、存档或 oplog 重放文件。如果尝试使用不同的源部署版本和目标部署版本恢复这些文件,则 mongorestore 进程可能会导致故障、静默故障或元数据损坏。

此外,请务必使用与创建数据文件时所用 mongodump 版本相同的 mongorestore 版本来加载这些数据文件。例如,如果使用 mongodump 版本 100.10.0 创建转储,则使用 mongorestore 版本 100.10.0 恢复。

mongorestore 可以创建新数据库或向现有数据库添加数据。 但是, mongorestore仅执行插入,不执行更新。 如果将文档恢复到现有数据库和集合,并且现有文档与要恢复的文档具有相同的_id字段值,则mongorestore不会覆盖这些文档。

默认, mongorestore可能会按随机顺序插入文档。 要在恢复进程保持文档顺序,请使用--maintainInsertionOrder

mongorestore 会在恢复数据后重新创建 mongodump 所记录的索引。

注意

对于将featureCompatibilityVersion (fCV) 设置为"4.0"或更早版本的 MongoDB 安装程序,如果现有文档中的索引键超过限制,创建索引时将出错。

要避免此问题,请考虑使用哈希索引或改为对计算值进行索引。 要解决恢复数据后的索引问题,您可以通过将mongod实例的failIndexKeyTooLong参数设置为 false,对目标数据库禁用默认索引键长度验证。

mongorestore 不会恢复system.profile集合数据。

mongorestore 自动创建与 配置为使用 FIPS 模式 的mongod / 的符合mongos FIPS 标准的连接。

如果在 --writeConcern 选项和 --uri 连接字符串选项中都指定了写关注,则 --writeConcern 值将覆盖 URI 字符串中指定的写关注。

从 MongoDB 5.0 开始,您可以使用 mongorestore 来恢复时间序列集合。有关详细信息,请参阅恢复时间序列集合

在免费 (M0) 和共享(M2M5)层 Atlas 集群上,适用以下限制:

  • 无法在 admin 数据库上运行 mongorestore。默认情况下,mongorestore 跳过此数据库。如果使用 --db 选项将目标数据库设置为 admin,程序将返回错误消息。

  • 不能将以下选项与 mongorestore 程序一起使用:

为了将数据还原到已启用访问控制的 MongoDB 部署中,如果数据不包括 system.profile 集合数据,且您运行 mongorestore时不包含 --oplogReplay选项,那么restore 角色可提供从备份还原数据的必要权限。

如果备份数据中包含 system.profile 集合数据,或是运行带 --oplogReplay 选项的 mongorestore,则需其他特权:

system.profile

如果备份数据包含 system.profile 集合数据,但目标数据库不包含 system.profile 集合,那么,即使程序实际上并未恢复 system.profile 文档,mongorestore 也会尝试创建该集合。因此,用户需要额外的权限才能对数据库的 system.profile 集合执行 createCollectionconvertToCapped 操作。

内置角色 dbAdmindbAdminAnyDatabase 均提供其他特权。

--oplogReplay

要使用 --oplogReplay 运行,请创建在 anyResource 上具有 anyAction用户定义角色

仅授予必须使用 --oplogReplay 运行 mongorestore 的用户。

有关作为备份和恢复策略一部分的 mongorestore 用法概述,请参阅使用 MongoDB 工具进行备份和恢复

要使用mongodumpmongorestore作为分分片的集群的备份策略,请参阅使用数据库转储备份自管理分片集群。

分片集群还可以使用以下协调备份和恢复进程之一,保证跨分片的原子性,同时仍然接受写入:

后退

兼容性与安装