mongorestore 行为、访问和使用
警告
字段中带有 $ 前缀的数据转储和恢复冲突
从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.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 模式 的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
,则需其他特权:
system.profile | 如果备份数据包含 内置角色 |
--oplogReplay | 要使用 仅授予必须使用 |
在备份策略中的用法
独立运行/副本集
有关作为备份和恢复策略一部分的 mongorestore
用法概述,请参阅使用 MongoDB 工具进行备份和恢复。
分片集群
要使用mongodump
和mongorestore
作为分分片的集群的备份策略,请参阅使用数据库转储备份自管理分片集群。
分片集群还可以使用以下协调备份和恢复进程之一,保证跨分片的原子性,同时仍然接受写入: