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

mongodump 示例

本页面

  • 使用mongodump 与集合
  • 使用 mongodump 与数据库并排除指定集合
  • 使用 mongodump 与访问控制
  • 输出到归档文件
  • 压缩输出
  • 复制和克隆数据库
  • 使用 AWS IAM 凭据连接到 MongoDB Atlas 集群
  • 使用特定数据库进行身份验证
  • 创建和恢复一致的备份文件
  • 了解更多

此页面显示了以下示例mongodump.

在系统命令行中运行 mongodump,而不是mongo shell。

以下操作创建了一个包含名为 records 的集合的 test 数据库的转储文件。在示例中,数据库运行在本地接口的 27017 端口。

mongodump --db=test --collection=records

以下操作将 test 数据库中除 userssalaries 之外的所有集合导出到磁盘。

mongodump --db=test --excludeCollection=users --excludeCollection=salaries

在下一个示例中,mongodump 将数据库备份到位于 /opt/backup/mongodump-2011-10-24 的位置,该数据库运行在主机 mongodb1.example.net 的端口 37017 上,并使用用户名 user 进行认证,如下所示

mongodump --host=mongodb1.example.net --port=37017 --username=user --authenticationDatabase=admin --out=/opt/backup/mongodump-2011-10-24

如果你不包括--passwordmongodump 将提示用户输入密码。

要将备份输出到归档文件,请使用带有 --archive 选项和归档文件名的 mongodump 运行。例如,以下操作创建了一个包含 test 数据库备份的文件 test.20150715.archive

mongodump --archive=test.20150715.archive --db=test

要压缩输出目录中的文件,请使用新的 --gzip 选项运行 mongodump。例如,以下操作将压缩文件输出到默认的 dump 目录。

mongodump --gzip --db=test

为了压缩由 mongodump 输出的归档文件,请使用 --gzip 选项与 --archive 选项结合使用,并指定压缩文件的名称。

mongodump --archive=test.20150715.gz --gzip --db=test

从版本 4.2 开始,MongoDB 删除了已过时的 copydb 命令和 clone 命令。

作为替代,用户可以使用 mongodumpmongorestore(使用 mongorestore 选项 --nsFrom--nsTo)。

例如,要将本地实例上运行的默认端口 27017 的 test 数据库复制到同一实例上的 examples 数据库,您可以使用以下方法

  1. 使用 mongodumptest 数据库转储到归档 mongodump-test-db

    mongodump --archive="mongodump-test-db" --db=test
  2. 使用 mongorestore 并带有 --nsFrom--nsTo 选项,从归档中恢复(更改数据库名称)

    mongorestore --archive="mongodump-test-db" --nsFrom="test.*" --nsTo="examples.*"

提示

根据需要包含其他选项,例如指定 uri 或主机、用户名、密码和认证数据库。

在版本100.1.0.

要连接到已配置为支持通过MongoDB Atlas集群,该集群通过AWS IAM凭证进行身份验证的,请提供类似于以下内容的连接字符串mongodump

mongodump 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>

使用此方式通过AWS IAM凭证连接到Atlas使用的是MONGODB-AWS 认证机制$external 认证源,如下例所示。

如果使用AWS会话令牌,同时,也提供它AWS_SESSION_TOKEN authMechanismProperties值,如下所示

mongodump 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>' <other options>

注意

如果AWS访问密钥ID、秘密访问密钥或会话令牌包含以下字符

: / ? # [ ] @

这些字符必须使用百分编码。

或者,AWS访问密钥ID、秘密访问密钥和可选的会话令牌可以通过--username--password--awsSessionToken选项在连接字符串外部提供,如下所示

mongodump 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' --username <aws access key id> --password <aws secret access key> --awsSessionToken <aws session token> <other options>

当作为命令行参数提供时,前面三个选项不需要百分编码。

您还可以使用标准的AWS IAM环境变量在您的平台上设置这些凭证。mongodump在使用MONGODB-AWS 身份验证机制:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

如果设置了这些凭证,则无需在连接字符串或通过它们的显式选项中指定。

注意

如果您选择使用AWS环境变量来指定这些值,则不能与这些凭证的相应显式或连接字符串选项混合使用。要么使用访问密钥ID的环境变量(以及如果使用,则使用会话令牌),要么 使用显式或连接字符串选项分别指定这些值。

以下示例在bash shell中设置环境变量

export AWS_ACCESS_KEY_ID='<aws access key id>'
export AWS_SECRET_ACCESS_KEY='<aws secret access key>'
export AWS_SESSION_TOKEN='<aws session token>'

在其他shell中设置环境变量的语法不同。有关更多信息,请参阅您shell的文档。

要验证已设置环境变量,请使用以下命令

env | grep AWS

设置环境变量后,运行以下示例以连接到MongoDB Atlas集群

mongodump 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>

要使用要转储的数据库以外的数据库进行身份验证,必须在MongoDB URI中指定authSource

在这个示例中

  • 使用用户名myuser和密码mypassword。此用户有权读取testdb

  • 使用admin数据库对用户进行身份验证。

  • 正在转储testdb数据库。

mongodump 'mongodb+srv://myuser:mypassword@cluster0.example.com/?authSource=admin' --db testdb

要使用 oplog 记录创建一致的 mongodump 备份文件,请使用 mongodump --oplog 选项。要从备份文件中恢复数据,请使用 mongorestore --oplogReplay 选项。

oplog 包含数据库写入操作的历史记录。

mongodump 输出

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

  • 索引定义。

  • 如果在 --oplog 指定的情况下,mongodump 运行期间发生的写入。

mongodump --oplogmongodump 输出目录的顶层创建一个名为 oplog.bson 的文件。该文件包含在 mongodump 运行期间发生的写入操作。在 mongodump 完成后发生的写入不记录在该文件中。

有关使用 mongodump 备份分片集群的信息,请参阅 使用数据库转储备份自托管分片集群。

要从oplog.bson文件恢复oplog条目,请使用mongorestore --oplogReplay。使用mongodump --oplogmongorestore --oplogReplay一起,以确保数据库是最新的,并且在mongodump运行期间包含了所有写入。

后退

行为