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 作为分片集群的备份策略的说明,请参阅 使用数据库转储备份自管理的分片集群。
分片集群还可以使用以下协调的备份和恢复过程之一,这些过程在仍然接受写入的同时保证了跨分片的一致性