mongodump 行为、访问权限和使用
警告
转储到不区分大小写的文件系统(例如Windows或 macOS)时,名称仅大小写不同的集合将被覆盖。 对于不区分大小写的文件系统,请始终使用 --archive选项。
警告
字段中带有 $ 前缀的数据转储和恢复冲突
从MongoDB 5.0开始,文档字段名称可以以美元字符 ( $
) 为前缀。 但是, mongodump
和mongorestore
不适用于集合选项中以美元字符为前缀的字段名称。
MongoDB扩展JSON (v 2 )无法区分类型包装器和与类型包装器同名的字段。 如果相应的BSON表示形式可能包含$
前缀键,请勿使用扩展JSON格式。 DBRefs机制是该一般规则的例外。
行为
在没有 的情况下使用mongodump
authSource
当MongoDB URI 中未指定authSource
时, --db
中指定的数据库名称将用于验证mongodump
会话并指示要转储的数据库。 有关在使用mongodump
时使用不同数据库进行身份验证的示例,请参阅使用特定数据库进行身份验证。
恢复到匹配的服务器版本
使用 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
恢复。
读取偏好
默认, mongodump
使用读取偏好(read preference)primary
。 要覆盖默认,您可以在 命令行选项或 --readPreference
中指定 读取偏好(read preference)--uri connection string
。
如果 URI 字符串和 --readPreference
选项中均指定了读取偏好,则 --readPreference
值将覆盖 URI 字符串中指定的读取偏好。
数据排除
如果同时指定--db
和--collection
选项, mongodump
则会转储指定的集合。
如果您仅指定 --db
选项,mongodump
会转储该数据库并排除以下内容:
如果
--db
的值为admin
:如果未连接到 Atlas 代理,则
mongodump
会转储数据库,但排除system.keys
集合。如果您连接到 Atlas 代理,则
mongodump
尝试转储数据库但会出错。
如果
--db
的值为config
,则mongodump
会转储该数据库中的所有集合。如果
--db
的值为local
,则mongodump
会转储该数据库中的所有集合。对于所有其他数据库,
mongodump
排除所有以system.
开头的集合,system.js
除外。
如果您省略 --db
选项,则适用以下排除:
mongodump
排除local
数据库。mongodump
仅在config
数据库的输出中包含以下集合:chunks
collections
databases
settings
shards
tags
version
如果您已连接到Atlas代理,则
mongodump
会排除admin
数据库。
mongodump
输出:
包含数据库中的文档和索引定义。
不包含索引数据。
mongorestore
或mongod
必须在恢复数据后重建索引。
如果您使用视图:
要导出视图中的文档,请使用
--viewsAsCollections
。
Metadata Output
如果 mongodump
输出到目录,输出将包含集合元数据,其中包括以下属性:
集合名称
集合类型
集合配置选项
UUID
索引
如果 mongodump
输出到标准输出 (stdout
),则输出不包含元数据。有关更多信息,请参阅 --out
选项。
Metadata Format
mongodump
对元数据文件使用扩展 JSON v 2.0 (规范)格式。 要解析这些文件以进行恢复,请使用mongorestore
,它支持扩展 JSON v 2 。 0 (规范或宽松模式)格式。
覆盖文件
mongodump
如果输出文件存在于备份数据文件夹中,则会覆盖这些文件。 在多次运行mongodump
命令之前,请确保不再需要输出文件夹(默认为dump/
文件夹)中的文件,或者重命名这些文件夹或文件。
mongodump
重新分片期间
mongodump
出现以下情况则失败:
mongodump
在进行重新分片操作时启动。reshardCollection
命令在mongodump
操作期间运行。
数据压缩处理
在使用WiredTiger存储引擎的mongod
实例上运行时, mongodump
会输出未压缩数据。
工作集
mongodump
可能会对mongod
的性能产生不利影响。 如果数据大于系统内存, mongodump
会将工作集挤出内存。
FIPS
mongodump
自动创建与配置为使用 FIPS模式的mongod
或mongos
的符合 FIPS 标准的连接。
mongodump
在Atlas免费层和共享层集群上使用
在免费 (M0
) 和共享(M2
和 M5
)层 Atlas 集群上,适用以下限制:
无法在
admin
数据库上运行mongodump
。默认情况下,mongodump
跳过此数据库。如果使用--db
选项将目标数据库设置为admin
,程序将返回错误消息。不能将以下选项与
mongodump
程序一起使用:
必需的访问权限
要针对已启用访问权限控制的MongoDB 部署运行mongodump
,您必须具有为每个要备份的数据库授予find
动作的特权。 内置backup
角色提供执行任一和所有数据库备份所需的特权。
在备份策略中的用法
独立运行部署和副本集
对于独立运行或副本集,mongodump
可以作为备份策略的一部分,mongorestore
用于基于查询的部分备份、从生产环境同步到暂存或开发环境或更改独立运行的存储引擎。
有关将mongodump
与mongorestore
结合使用作为备份和恢复策略的一部分的详细信息,请参阅:
分片集群
要使用mongodump
和mongorestore
作为分分片的集群的备份策略,请参阅使用数据库转储备份自管理分片集群。
分片集群还可以使用以下协调备份和恢复进程之一,保证跨分片的原子性,同时仍然接受写入: