对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

mongodump 行为、访问权限和使用

警告

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

警告

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

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

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

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

使用 mongorestore 加载由 mongodump 创建的数据文件时,源部署和目标部署的 MongoDB 版本必须是以下任一版本:

  • 同一主要版本。

  • 同一特征兼容性版本。

例如,如果转储是通过运行版本 4.4 的 MongoDB 部署创建的,那么恢复到的 MongoDB 部署也必须运行版本 4.4 或将其 FCV 设置为 4.4。

要更改特征兼容性版本,请参阅setFeatureCompatibilityVersion 。

注意

您可以将从 mongodump 生成的 BSON 文件恢复到与源部署运行相同或更新版本的 MongoDB 部署中。然而,在较新版本的部署中恢复文件并不是升级部署的推荐方法。要了解如何升级部署,请参阅升级文档。

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

此外,确保加载数据文件时使用的 mongorestore 版本与创建数据文件时使用的 mongodump 版本相同。实际上,使用不同版本的 mongorestore 通常可行,但如果转储格式在版本之间发生变化,则恢复可能会失败或错误地恢复数据。示例,如果使用 mongodump 版本 100.19.0 创建转储,请使用 mongorestore 版本 100.19.0 来恢复转储。

要从MongoDB.9 0部署中转储时间序列集合,请使用Database Tools..100 160或更高版本。早期的Database Tools版本会直接读取时间序列存储桶命名空间,而MongoDB.9 0不允许这样做。如果使用较早的Database Tools版本,则mongodump 会中止并显示CommandNotSupportedOnLegacyTimeseriesBucketsNamespace 错误。要解决此错误,升级到最新的Database Tools版本。

如果在 mongodump 读取时间序列集合时开始时间序列格式转换,则操作失败并出现 InterruptedDueToTimeseriesUpgradeDowngrade 错误。转储未被截断或损坏。要解决该错误,请等待功能兼容性版本 (FCV) 更改完成,然后再次运行 mongodump。要了解有关转换的更多信息,请参阅跨时间序列格式转换的 Oplog 重播。

默认情况下,mongodump 使用读取偏好(read preference)primary。如需覆盖默认值,您可以在 命令行选项中指定 读取偏好(read preference) --readPreference,或在--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 必须在恢复数据后重建索引。

如果您使用视图:

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

  • 集合名称

  • 集合类型

  • 集合配置选项

  • UUID

  • 索引

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

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

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

mongodump 出现以下情况则失败:

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

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

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

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

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

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

注意

目标集群回滚

如果集群在恢复过程中发生回滚,删除所有恢复或导入的数据,并从头开始重新执行该过程。请参阅 回滚文档 以获取更多详情。

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

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

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

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

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