文档菜单
文档首页
/
MongoDB 数据库工具
/

mongodump 行为、访问和用法

本页内容

  • 行为
  • 所需访问权限
  • 在备份策略中的使用
  • 了解更多

警告

当将数据导出到不区分大小写的文件系统(如Windows或macOS)时,名称仅通过大小写不同的集合将被覆盖。对于不区分大小写的文件系统,始终使用--archive 选项。

警告

数据导出和恢复与字段中的 $ 前缀冲突

从 MongoDB 5.0 开始,文档字段名可以以美元字符($)为前缀)。然而,mongodumpmongorestore 不支持在集合选项中使用以美元字符为前缀的字段名。

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

当在 MongoDB URI 中未指定 authSource 时,--db 中指定的数据库名称既用于认证您的 mongodump 会话,也用于指示要转储的数据库。有关使用 mongodump 时为认证使用不同数据库的示例,请参阅使用特定数据库进行认证。

使用 mongorestore 加载数据文件时,您的源和目标部署的 MongoDB 版本必须是:

  • 相同的次要版本。

  • 相同的功能兼容性版本。

例如,如果您的转储是从运行版本 4.4 的 MongoDB 部署创建的,则您要恢复到的 MongoDB 部署也必须运行版本 4.4 或将其 FCV 设置为 4.4

要更改功能兼容性版本,请参阅 setFeatureCompatibilityVersion.

注意

您可以将由 mongodump 生成的 BSON 文件恢复到与源部署相同或更高版本的 MongoDB 部署。但是,将文件恢复到更高版本部署不是推荐升级部署的方法。有关如何升级部署的信息,请参阅升级文档。

此保证不适用于元数据、存档或 oplog 重放文件。如果您尝试使用不同的源和目标部署版本恢复这些文件,则 mongorestore 进程可能会导致失败、静默失败或损坏的元数据。

此外,请确保您使用的 mongorestore 版本与您用于创建它们的 mongodump 版本相同。例如,如果您使用 mongodump 版本 100.10.0 创建转储,则使用 mongorestore 版本 100.10.0 进行恢复。

默认情况下,mongodump 使用读取偏好 primary。要覆盖默认值,可以在 读取偏好--readPreference 命令行选项或 --uri 连接字符串中指定。

如果同时指定了 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 输出到目录,输出包含以下属性的集合元数据

  • 集合名称

  • 集合类型

  • 集合配置选项

  • UUIDs

  • 索引

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

mongodump 使用元数据文件的 扩展 JSON v2.0 (规范格式) 格式。为了在恢复时解析这些文件,请使用支持 扩展 JSON v2.0 (规范或宽松模式) 格式的 mongorestore

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

mongodump 如果

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

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

mongodump自动创建符合FIPS规范的连接到配置为使用FIPS模式的mongodmongos

在免费版(M0)和共享版(M2M5)Atlas集群上,存在以下限制

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

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

注意

目标集群回滚

如果在恢复过程中集群发生回滚,请删除所有已恢复或导入的数据,并从开始重新进行此过程。有关详细信息,请参阅回滚文档

要运行mongodump以备份启用了访问控制的MongoDB部署,您必须具有授予备份数据库所需数据库的find操作的权限。内置的backup角色提供了执行任何和所有数据库备份所需的权限。

对于独立部署或副本集,mongodump 可以作为备份策略的一部分,与 mongorestore 结合使用进行基于查询的局部备份,同步生产环境到预发布或开发环境,或更改独立部署的存储引擎。

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

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

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

返回

兼容性与安装