添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Docs 菜单

mongodump

mongodump 是一种用于创建数据库内容二进制导出文件的实用程序。 mongodump 可以从以下位置导出数据:

您可以使用 Database Tools 从自托管部署迁移到 MongoDB Atlas 。MongoDB Atlas 是用于云中 MongoDB 部署的完全托管服务。要了解详情,请参阅 使用 mongorestore 播种。

要了解迁移到 MongoDB Atlas 的所有方法,请参阅 迁移或导入数据。

mongodump 可以连接到 mongod mongos 实例。

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

从系统命令行运行 mongodump ,而非 mongo shell。

提示

另请参阅:

mongorestore ,允许导入从 mongodump 导出的数据。

如果您要存档过时数据以节省存储成本,请考虑使用 MongoDB Atlas 中的 Online Archive 。Online Archive 可自动将不常访问的数据存档到完全托管的 S3 存储桶,以实现经济高效的数据分层。

mongodump 转储:

  • 收集文档、元数据和选项。

  • 索引定义。

  • 如果使用 mongodump --oplog 选项运行,则在导出期间发生的写入。

mongodump 将数据转储到目录或二进制存档文件中。

示例 mongodump 目录转储结构和文件:

dump
├── easternSalesDatabase
│ ├── sales.bson
│ ├── sales.metadata.json
│ └── salesByMonthView.metadata.json
├── westernSalesDatabase
│ ├── sales.bson
│ ├── sales.metadata.json
│ └── salesByMonthView.metadata.json
└── oplog.bson

对于目录转储, mongodump 创建:

  • 一个默认名称为 dump 的根目录。您可以使用 mongodump --out 选项设置名称。

  • 每个数据库的根目录中的子目录。例如,如果数据库名称是 easternSalesDatabase ,则子目录名称也是 easternSalesDatabase

  • 一个 BSON 文件,其中包含每个集合的文档。例如,如果集合名称为 sales ,则 BSON 文件为 sales.bson

  • 每个数据库目录中每个集合的元数据 JSON 文件。例如,元数据 sales.metadata.json 文件。该文件包含一个文档,其中包含导出的集合元数据、选项和索引。

  • 每个视图的元数据 JSON 文件。例如,元数据 salesByMonthView.metadata.json 文件。视图没有 BSON 文件。

  • 位于根目录下的可选 oplog oplog.bson 文件,其中包含 mongodump 运行期间发生的写操作。要输出 oplog.bson 文件,请使用 mongodump --oplog 选项。

如果您使用 mongodump --gzip 选项,则会压缩 BSON 文件和 JSON 元数据文件。压缩后的导出文件的名称末尾有 bson.gz metadata.json.gz

若要将数据转储到二进制存档文件,请使用 mongodump --archive 选项。 mongodump 创建包含归档数据的二进制文件。

mongodump 事务语法:

mongodump <options> <connection-string>
--help

返回有关 mongodump 的选项和使用的信息。

--verbose, -v

增加标准输出或日志文件中返回的内部报告数量。通过多次包含该选项,可以使用 -v 形式增加详细程度。例如: -vvvvv

--quiet

在尝试限制输出量的安静模式下运行 mongodump

该选项会抑制:

  • 数据库命令 输出

  • 复制活动

  • 已接受和已关闭的事件连接

  • 所有日志,包括错误信息,解析选项时出现的错误信息除外

--version

返回 mongodump 版本号。

--config=<filename>

版本 100.3.0 中的新增内容

指定包含以下 mongodump 选项的敏感值的 YAML 配置文件的完整路径:

除通过密码提示来指定密码之外,这是为 mongodump 指定密码的另一推荐方法。

配置文件采用以下形式:

password: <password>
uri: mongodb://mongodb0.example.com:27017
sslPEMKeyPassword: <password>

password: 字段指定密码并在 uri: 字段中提供包含冲突密码的连接字符串将导致错误。

请务必使用相应的文件系统权限保护此文件。

注意

如果使用 --config 来指定配置文件,并使用 --password --uri --sslPEMKeyPassword 选项来 mongodump ,那么每个命令行选项均会覆盖其在配置文件中的相应选项。

--uri=<connectionString>

指定 MongoDB 部署的可解析 URI 连接字符串 ,用引号引起来:

--uri="mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"

mongodump 100.0 版本开始,也可以将连接字符串作为位置参数提供,而无需使用 --uri 选项:

mongodump mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

作为位置参数,可以在命令行上的任何位置指定连接字符串,前提是它以 mongodb:// mongodb+srv:// 开头。例如:

mongodump --username joe --password secret1 mongodb://mongodb0.example.com:27017 --ssl

只能提供一个连接字符串。无论是使用 --uri 选项还是作为位置参数,尝试纳入多个连接字符串都会导致错误。

有关连接字符串组件的信息,请参阅 连接字符串 URI 格式 文档。

注意

connection string 中的某些组件也可以使用各自的显式命令行选项来指定,例如 --username --password 。在提供连接字符串的同时,使用显式选项并指定冲突信息会导致错误。

注意

如果是在 Ubuntu 18.04 上使用 mongodump ,则在使用带 --uri 选项的 SRV 连接字符串 (采用 mongodb+srv:// 格式)时,可能会出现“ cannot unmarshal DNS ”错误消息。如果是这样,请改用以下选项之一:

警告

在某些系统上,使用 --uri 选项在连接字符串中提供的密码,可能会被其他用户调用的系统状态程序(如 ps )探测到。请考虑:

  • 在连接字符串中省略密码,接收交互式密码提示,或者

  • 使用 --config 选项指定包含密码的配置文件。

--host=<hostname><:port>, -h=<hostname><:port>

默认 :localhost:27017

指定 MongoDB 部署的可解析主机名。默认情况下, mongodump 尝试连接到在本地主机端口号 27017 上运行的 MongoDB 实例。

要连接到副本集,请指定 replSetName 和副本集成员的种子列表,如下所示:

--host=<replSetName>/<hostname1><:port>,<hostname2><:port>,<...>

指定副本集列表格式时, mongodump 始终连接到 主节点

还可以通过仅指定该成员的主机和端口来连接至副本集的任何单个成员:

--host=<hostname1><:port>

如果您使用 IPv6 并采用 <address>:<port> 格式,那么您必须将地址与端口的组合部分用方括号括起。例如: [<address>]

或者,您也可直接在 URI connection string 中指定主机名。在提供连接字符串的同时使用 --host 并指定冲突信息将导致错误。

--port=<port>

默认值 :27017

指定 MongoDB 实例侦听客户端连接的 TCP 端口。

或者,也可以直接在 URI connection string 中指定端口。在提供连接字符串的同时使用 --port 并指定冲突信息将导致错误。

--ssl

启用与已启用 TLS/SSL 支持的 mongod mongos 的连接。

或者,也可以直接在 URI connection string 中配置 TLS/SSL 支持。在提供连接字符串的同时使用 --ssl 并指定冲突信息将导致错误。

--sslCAFile=<filename>

指定包含来自证书颁发机构的根证书链的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

或者,也可以直接在 URI connection string 中指定 .pem 文件。在提供连接字符串的同时使用 --sslCAFile 并指定冲突信息将导致错误。

--sslPEMKeyFile=<filename>

指定同时包含 TLS/SSL 证书和密钥的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

使用 --ssl 选项连接到启用了 CAFile 没有 allowConnectionsWithoutCertificates mongod mongos 时,需要使用此选项。

或者,也可以直接在 URI connection string 中指定 .pem 文件。在提供连接字符串的同时使用 --sslPEMKeyFile 并指定冲突信息将导致错误。

--sslPEMKeyPassword=<value>

指定解密证书密钥文件的密码(即 --sslPEMKeyFile )。仅当证书密钥文件已加密时才使用 `--sslPEMKeyPassword 选项。在所有情况下, mongodump 都会对所有日志记录和报告输出中的密码进行脱敏。

如果 PEM 文件中的私钥已加密,并且您未指定 --sslPEMKeyPassword 选项, mongodump 将提示输入密码。请参阅 TLS/SSL 证书密码。

或者,您也可以直接在 URI connection string 中指定密码。在提供连接字符串的同时使用 --sslPEMKeyPassword 并指定冲突信息将导致错误。

警告

在某些系统上,直接使用 --sslPEMKeyPassword 选项提供的密码,可能会被其他用户调用的系统状态程序(如 ps )探测到。可以考虑使用 --config 选项,指定一个包含密码的配置文件。

--sslCRLFile=<filename>

指定包含证书吊销列表的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

--sslAllowInvalidCertificates

绕过对服务器证书的验证检查并允许使用无效证书。 使用 allowInvalidCertificates 设置时,MongoDB 将使用无效证书记录为警告。

警告

尽管可用,但请尽可能避免使用 --sslAllowInvalidCertificates 选项。如果需要使用 --sslAllowInvalidCertificates ,请仅在不可能入侵的系统上使用该选项。

在未验证服务器证书的情况下,连接到 mongod mongos 实例存在潜在的安全风险。如果只需禁用 TLS/SSL 证书中的主机名验证,请参阅 --sslAllowInvalidHostnames

或者,也可以直接在 URI connection string 中禁用证书验证。在提供连接字符串的同时使用 --sslAllowInvalidCertificates 并指定冲突信息将导致错误。

--sslAllowInvalidHostnames

禁用 TLS/SSL 证书中的主机名验证。即使证书中的主机名与指定的主机名不匹配,也支持 mongodump 连接到 MongoDB 实例。

或者,您也可以直接在 URI connection string 中禁用主机名验证。在提供连接字符串的同时使用 --sslAllowInvalidHostnames 并指定冲突信息将导致错误。

--username=<username>, -u=<username>

指定用户名,用于对使用身份验证的 MongoDB 数据库进行身份验证。与 --password <mongodump --password> --authenticationDatabase <mongodump --authenticationDatabase> 选项结合使用。

或者,也可直接在 URI connection string 中指定用户名。在提供连接字符串的同时使用 --username 并指定冲突信息将导致错误。

如果使用 MONGODB-AWS authentication mechanism 连接到 MongoDB Atlas 集群,您可以在以下位置指定您的 AWS 访问密钥 ID:

请参阅 使用 AWS IAM 凭据连接到 MongoDB Atlas 集群 ,了解每个凭据的示例。

--password=<password>, -p=<password>

指定密码,用于对使用身份验证的 MongoDB 数据库进行身份验证。与 --username <mongodump --username> --authenticationDatabase <mongodump --authenticationDatabase> 选项结合使用。

要提示用户输入密码,可使用不带 --password <mongodump --password> --username <mongodump --username> 选项,或指定空字符串作为 --password <mongodump --password> 值,如 --password ""

或者,您也可以直接在 URI connection string 中指定密码。在提供连接字符串的同时使用 --password 并指定冲突信息将导致错误。

如果使用 MONGODB-AWS authentication mechanism 连接到 MongoDB Atlas 集群,您可以在以下位置指定您的 AWS 秘密访问密钥:

请参阅 使用 AWS IAM 凭据连接到 MongoDB Atlas 集群 ,了解每个凭据的示例。

警告

在某些系统上,直接使用 --password 选项提供的密码,可能会被其他用户调用的系统状态程序(如 ps )探测到。请考虑:

  • 省略 --password 选项,从而接收交互式密码提示,或

  • 使用 --config 选项指定包含密码的配置文件。

--awsSessionToken=<AWS Session Token>

如果使用 MONGODB-AWS authentication mechanism 连接到 MongoDB Atlas 集群,并且除了 AWS 访问密钥 ID 和私密访问密钥之外还使用会话令牌,则可以在以下情况中指定 AWS 会话令牌:

请参阅 使用 AWS IAM 凭据连接到 MongoDB Atlas 集群 ,了解每个凭据的示例。

仅在使用 MONGODB-AWS authentication mechanism 时有效。

--authenticationDatabase=<dbname>

指定已创建指定 --username <mongodump --username> 的身份验证数据库。请参阅 身份验证数据库

如果未指定身份验证数据库, mongodump 将假定指定要导出的数据库保存用户凭证。

如果未指定身份验证数据库或要导出的数据库,则 mongodump 将假定 admin 数据库保存用户的凭证。

如果使用的是 GSSAPI (Kerberos)、 PLAIN (LDAP SASL) 或 MONGODB-AWS authentication mechanisms ,则须将 --authenticationDatabase 设为 $external

或者,也可以直接在 URI connection string 中指定身份验证数据库。在提供连接字符串的同时使用 --authenticationDatabase 并指定冲突信息将导致错误。

--authenticationMechanism=<name>

默认值 :SCRAM-SHA-1

指定 mongodump 实例用来向 mongod mongos 进行身份验证的身份验证机制。

在版本 100.1.0 中进行了更改 :从版本 100.1.0 开始, mongodump 在连接到 MongoDB Atlas 集群时增加了对 MONGODB-AWS 身份验证机制的支持。

说明
使用 SHA-1 哈希函数的 RFC 5802 标准 Salted 质询响应身份验证机制。

RFC 7677 使用 SHA-256 哈希函数的标准 Salted Challenge Response Authentication Mechanism

需将 featureCompatibilityVersion 设为 4.0

MongoDB TLS/SSL 证书身份验证。
MONGODB-AWS

使用 AWS IAM 凭据进行外部身份验证,用于连接到 MongoDB Atlas 集群。请参阅 使用 AWS IAM 凭证连接到 MongoDB Atlas 集群

100.1.0 版本新增

GSSAPI (Kerberos)
使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。
普通版 (LDAP SASL)
使用 LDAP 进行外部身份验证。也可使用 PLAIN 对数据库内用户进行身份验证。 PLAIN 以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。

或者,也可以直接在 URI connection string 中指定身份验证机制。在提供连接字符串的同时使用 --authenticationMechanism 并指定冲突信息将导致错误。

--gssapiServiceName

使用 GSSAPI/Kerberos 指定服务名称。仅当服务未使用默认名称 mongodb 时才需要。

此选项仅在 MongoDB Enterprise 中可用。

您也可以直接在 URI connection string 中指定服务名称。在提供连接字符串的同时使用 --gssapiServiceName 并指定冲突信息将导致错误。

--gssapiHostName

使用 GSSAPI/Kerberos