Docs 菜单
Docs 主页
/
MongoDB 数据库工具
/

mongodump 行为、访问权限和使用

在此页面上

  • 行为
  • 必需的访问权限
  • 在备份策略中的用法
  • 了解详情

警告

转储到不区分大小写的文件系统(例如Windows或 macOS)时,名称仅大小写不同的集合将被覆盖。 对于不区分大小写的文件系统,请始终使用 --archive选项。

警告

字段中带有 $ 前缀的数据转储和恢复冲突

从MongoDB 5.0开始,文档字段名称可以以美元字符 ( $ ) 为前缀。 但是, mongodumpmongorestore不适用于集合选项中以美元字符为前缀的字段名称。

MongoDB扩展JSON (v 2 )无法区分类型包装器和与类型包装器同名的字段。 如果相应的BSON表示形式可能包含$前缀键,请勿使用扩展JSON格式。 DBRefs机制是该一般规则的例外。

当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 输出:

  • 包含数据库中的文档和索引定义。

  • 不包含索引数据。

mongorestoremongod必须在恢复数据后重建索引。

如果您使用视图

如果 mongodump 输出到目录,输出将包含集合元数据,其中包括以下属性:

  • 集合名称

  • 集合类型

  • 集合配置选项

  • UUID

  • 索引

如果 mongodump 输出到标准输出 (stdout),则输出不包含元数据。有关更多信息,请参阅 --out 选项。

mongodump 对元数据文件使用扩展 JSON v 2.0 (规范)格式。 要解析这些文件以进行恢复,请使用mongorestore ,它支持扩展 JSON v 2 。 0 (规范或宽松模式)格式。

mongodump 如果输出文件存在于备份数据文件夹中,则会覆盖这些文件。 在多次运行mongodump命令之前,请确保不再需要输出文件夹(默认为dump/文件夹)中的文件,或者重命名这些文件夹或文件。

mongodump 出现以下情况则失败:

在使用WiredTiger存储引擎的mongod实例上运行时, mongodump会输出未压缩数据。

mongodump 可能会对mongod的性能产生不利影响。 如果数据大于系统内存, mongodump会将工作集挤出内存。

mongodump 自动创建与配置为使用 FIPS模式mongodmongos的符合 FIPS 标准的连接。

在免费 (M0) 和共享(M2M5)层 Atlas 集群上,适用以下限制:

  • 无法在 admin 数据库上运行 mongodump。默认情况下,mongodump 跳过此数据库。如果使用 --db 选项将目标数据库设置为 admin,程序将返回错误消息。

  • 不能将以下选项与 mongodump 程序一起使用:

要针对已启用访问权限控制的MongoDB 部署运行mongodump ,您必须具有为每个要备份的数据库授予find动作的特权。 内置backup角色提供执行任一和所有数据库备份所需的特权。

对于独立运行或副本集,mongodump 可以作为备份策略的一部分,mongorestore 用于基于查询的部分备份、从生产环境同步到暂存或开发环境或更改独立运行的存储引擎。

有关将mongodumpmongorestore结合使用作为备份和恢复策略的一部分的详细信息,请参阅:

要使用mongodumpmongorestore作为分分片的集群的备份策略,请参阅使用数据库转储备份自管理分片集群。

分片集群还可以使用以下协调备份和恢复进程之一,保证跨分片的原子性,同时仍然接受写入:

后退

兼容性与安装