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