mongorestore行为、访问和用法
警告
字段中带有$前缀的与数据转储和恢复冲突
从MongoDB 5.0开始,文档字段名可以以美元字符($
)为前缀。但是,mongodump
和 mongorestore
不支持集合选项中字段名以美元字符为前缀的情况。
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 来禁用默认的索引键长度验证。
排除 system.profile
集合
mongorestore
不会恢复 system.profile
集合数据。
FIPS
mongorestore
会自动创建符合 FIPS 标准的连接到配置为使用 FIPS 模式的 mongod
/mongos
。
写入关注
如果在 --writeConcern
选项和 --uri
连接字符串选项中都指定了写入关注,则 --writeConcern
的值将覆盖 URI 字符串中指定的写入关注。
时间序列集合
从 MongoDB 5.0 开始,可以使用 mongorestore
恢复 时间序列集合。有关详细信息,请参阅 恢复时间序列集合。
在 Atlas 免费和共享层集群上使用 mongorestore
在免费(M0
)和共享(M2
和M5
)级别的Atlas集群中,存在以下限制
您不能在
admin
数据库上运行mongorestore
。默认情况下,mongorestore
会跳过此数据库。如果您使用--db
选项将目标数据库设置为admin
,程序会返回错误。您不能使用以下选项与
mongorestore
程序一起使用
所需访问权限
要将数据恢复到已启用访问控制的MongoDB部署,则需要具有restore
角色的必要权限,以便从备份中恢复数据如果数据不包含system.profile
集合数据,并且您在不使用--oplogReplay
选项的情况下运行mongorestore
。
如果备份数据包含system.profile
集合数据或您使用--oplogReplay
选项运行mongorestore
,则需要额外的权限
system.profile | 如果备份数据包含 内置角色 |
--oplogReplay | 要使用 仅授予必须使用 |
在备份策略中的使用
独立副本集
有关将 mongorestore
作为备份和恢复策略的一部分的概述,请参阅 使用 MongoDB 工具备份和恢复。
分片集群
有关将 mongodump
和 mongorestore
作为分片集群的备份策略的说明,请参阅 使用数据库转储备份自管理的分片集群。
分片集群还可以使用以下协调的备份和恢复过程之一,这些过程在仍然接受写入的同时保证了跨分片的一致性