文档菜单
文档首页
/
MongoDB数据库工具
/

mongorestore行为、访问和用法

本页内容

  • 行为
  • 所需访问权限
  • 备份策略中的使用
  • 了解更多

警告

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

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

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

当使用mongorestore来加载数据文件时,源和目标部署的MongoDB版本必须是:

  • 相同的major版本。

  • 相同的feature compatibility版本。

例如,如果您的备份是从运行版本4.4的MongoDB部署创建的,那么您恢复到的MongoDB部署也必须运行版本4.4或将其FCV设置为4.4

要更改feature compatibility版本,请参阅setFeatureCompatibilityVersion

注意

您可以将由mongodump生成的BSON文件恢复到与源部署相同或更高版本的MongoDB部署。但是,将文件恢复到更高版本的部署不是推荐升级部署的方法。要了解如何升级部署,请参阅升级文档。

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

此外,请确保您使用与创建数据文件时相同的mongodump版本来加载数据文件。例如,如果您使用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 标准的连接到配置为使用 FIPS 模式的 mongod/mongos

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

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

在免费(M0)和共享(M2M5)级别的Atlas集群中,存在以下限制

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

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

注意

目标集群回滚

如果在恢复过程中集群进行了回滚,请删除所有已恢复或导入的数据,并从头开始重新执行此过程。有关更多详细信息,请参阅回滚文档

要将数据恢复到已启用访问控制的MongoDB部署,则需要具有restore角色的必要权限,以便从备份中恢复数据如果数据不包含system.profile集合数据,并且您在不使用--oplogReplay选项的情况下运行mongorestore

如果备份数据包含system.profile集合数据或您使用--oplogReplay选项运行mongorestore,则需要额外的权限

system.profile

如果备份数据包含 system.profile 集合数据,而目标数据库不包含 system.profile 集合,则 mongorestore 尝试创建该集合,尽管程序实际上并没有恢复 system.profile 文档。因此,用户需要额外的权限来在数据库的 system.profile 集合上执行 createCollectionconvertToCapped 操作。

内置角色 dbAdmindbAdminAnyDatabase 提供了额外的权限。

--oplogReplay

要使用 --oplogReplay 运行,创建一个具有在 任何资源 上执行 任何操作 权限的用户定义角色。

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

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

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

分片集群还可以使用以下协调的备份和恢复过程之一,这些过程在仍然接受写入的同时保证了跨分片的一致性

返回

兼容性与安装