mongodump 示例
本页面
此页面显示了以下示例mongodump
.
在系统命令行中运行 mongodump
,而不是mongo
shell。
使用 mongodump
与集合
以下操作创建了一个包含名为 records
的集合的 test
数据库的转储文件。在示例中,数据库运行在本地接口的 27017
端口。
mongodump --db=test --collection=records
使用 mongodump
与数据库并排除指定集合
以下操作将 test
数据库中除 users
和 salaries
之外的所有集合导出到磁盘。
mongodump --db=test --excludeCollection=users --excludeCollection=salaries
使用带有访问控制的 mongodump
命令
在下一个示例中,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
如果你不包括--password
,mongodump
将提示用户输入密码。
输出到归档文件
要将备份输出到归档文件,请使用带有 --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
命令。
作为替代,用户可以使用 mongodump
和 mongorestore
(使用 mongorestore
选项 --nsFrom
和 --nsTo
)。
例如,要将本地实例上运行的默认端口 27017 的 test
数据库复制到同一实例上的 examples
数据库,您可以使用以下方法
使用
mongodump
将test
数据库转储到归档mongodump-test-db
mongodump --archive="mongodump-test-db" --db=test 使用
mongorestore
并带有--nsFrom
和--nsTo
选项,从归档中恢复(更改数据库名称)mongorestore --archive="mongodump-test-db" --nsFrom="test.*" --nsTo="examples.*"
提示
根据需要包含其他选项,例如指定 uri 或主机、用户名、密码和认证数据库。
使用AWS IAM凭证连接到MongoDB Atlas集群
新在版本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、秘密访问密钥和可选的会话令牌可以通过--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
运行期间发生的写入。
使用带 oplog 选项的 mongodump
mongodump --oplog
在 mongodump
输出目录的顶层创建一个名为 oplog.bson
的文件。该文件包含在 mongodump
运行期间发生的写入操作。在 mongodump
完成后发生的写入不记录在该文件中。
有关使用 mongodump
备份分片集群的信息,请参阅 使用数据库转储备份自托管分片集群。
使用带有oplogReplay选项的mongorestore
要从oplog.bson
文件恢复oplog条目,请使用mongorestore --oplogReplay
。使用mongodump --oplog
与mongorestore --oplogReplay
一起,以确保数据库是最新的,并且在mongodump
运行期间包含了所有写入。