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

mongodump 示例

在此页面上

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

本页显示 mongodump的示例。

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

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

mongodump --db=test --collection=records

以下操作将转储 test 数据库中除 userssalaries 以外的所有集合:

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

在下一个示例中,mongodump 从运行在主机 mongodb1.example.net 端口 37017 上的数据库创建位于 /opt/backup/mongodump-2011-10-24 的数据库转储,并使用用户名 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)。

例如,要将 test 数据库从运行在默认端口 27017 上的本地实例复制到同一个实例上的 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 Amazon Web ServicesAmazon Web Services IAM 凭证进行身份验证的 集群,请执行 6} ,为 提供一个connection string 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 authentication mechanism$external authSource,如本示例所示。

如果还使用 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、秘密访问密钥或会话令牌包含以下字符:

: / ? # [ ] @

这些字符必须使用百分比编码进行转换。

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

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 authentication mechanism 时会检查以下环境变量:

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

要使用mongodump备份分片集群,请参阅使用数据库转储备份自管理分片集群。

要从 oplog.bson 文件中恢复 oplog 条目,请使用 mongorestore --oplogReplay。将 mongodump --oplogmongorestore --oplogReplay 结合使用,以确保数据库是最新的,并且具有在 mongodump 运行期间发生的所有写入操作。

后退

行为