转储、还原、导入和导出数据
您可以使用 mongodump、mongorestore、mongoexport 和 mongoimport 实用工具将数据移入和移出 Amazon DocumentDB 集群。此部分讨论了所有这些工具和配置的用途,以帮助您实现更好的性能。
mongodump
实用工具创建 mongodump 数据库的二进制 (BSON) 备份。MongoDB由于以二进制格式存储数据可实现大小效率,因此,在希望将数据还原到 mongodump 集群中时,MongoDB 工具是转储源 Amazon DocumentDB 部署中的数据的首选方法。
根据用于执行命令的实例或计算机上的可用资源,您可以通过使用 mongodump 选项增加转储的并行连接数(默认为 1)来加快 --numParallelCollections 的速度。一个好的经验法则是,在 Amazon DocumentDB 集群的主实例上,为每个 vCPU 启动一个工作线程。
示例用法
下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongodump 实用工具的使用示例。
1. mongodump --ssl \
2. --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \
3. --collection=sample-collection \
4. --db=sample-database \
5. --out=sample-output-file \
6. --numParallelCollections 4 \
7. --username=sample-user \
8. --password=abc0123 \
9. --sslCAFile rds-combined-ca-bundle.pem
mongorestore
利用 mongorestore 实用工具,您可以还原使用 mongodump 实用工具创建的数据库的二进制 (BSON) 备份。您可以通过使用 --numInsertionWorkersPerCollection 选项(默认值为 1)增加还原期间每个集合的工作线程数来提高还原性能。一个好的经验法则是,在 Amazon DocumentDB 集群的主实例上,为每个 vCPU 启动一个工作线程。
示例用法
下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongorestore 实用工具的使用示例。
1. mongorestore --ssl \
2. --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \
3. --username=sample-user \
4. --password=abc0123 \
5. --sslCAFile rds-combined-ca-bundle.pem <fileToBeRestored>
mongoexport
mongoexport 工具将 Amazon DocumentDB 中的数据导出为 JSON、CSV 或 TSV 文件格式。mongoexport 工具是导出要求可供人类或机器读取的数据的首选方法。
注意
mongoexport 无法直接支持并行导出。但是,可以通过同时为不同的集合执行多个 mongoexport 作业来提高性能。
示例用法
下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongoexport 工具的使用示例。
1. mongoexport --ssl \
2. --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \
3. --collection=sample-collection \
4. --db=sample-database \
5. --out=sample-output-file \
6. --username=sample-user \
7. --password=abc0123 \
8. --sslCAFile rds-combined-ca-bundle.pem
mongoimport
mongoimport 工具将 JSON、CSV 或 TSV 文件的内容导入 Amazon DocumentDB 集群中。可以使用 -–numInsertionWorkers 参数实现并行化和加快导入速度(默认值为 1)。
示例用法
下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongoimport 工具的使用示例。
1. mongoimport --ssl \
2. --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \
3. --collection=sample-collection \
4. --db=sample-database \
5. --file=<yourFile> \
6. --numInsertionWorkers 4
7. --username=sample-user
8. --password=abc0123 \
9. --sslCAFile rds-combined-ca-bundle.pem
教程
以下教程介绍如何使用 mongodump、mongorestore、mongoexport 和 mongoimport 实用工具将数据移入和移出 Amazon DocumentDB 集群。
- 先决条件 — 在开始之前,请确保您的 Amazon DocumentDB 集群已配置,并且您有权访问位于您的集群所在的同一 VPC 中的 Amazon EC2 实例。有关更多信息,请参阅使用 Amazon EC2 进行连接。
要能够使用 mongo 实用工具,您必须已在 EC2 实例中安装 mongodb-org-tools 包,如下所示。
```
- sudo yum install mongodb-org-tools-4.0.18 ```
由于 Amazon DocumentDB 默认使用传输层安全性 (TLS) 加密,因此您还必须下载 Amazon RDS 证书颁发机构 (CA) 文件以使用 mongo shell 进行连接,如下所示。
```
- wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem ```
- 下载示例数据 — 在本教程中,您将下载一些包含餐厅相关信息的示例数据。
```
- wget https://raw.githubusercontent.com/ozlerhakan/mongodb-json-files/master/datasets/restaurant.json ```
- 将示例数据导入 Amazon DocumentDB 中 — 由于数据采用的是逻辑 JSON 格式,因此,您将使用
mongoimport实际工具将数据导入 Amazon DocumentDB 集群中。
```
- mongoimport --ssl \
- --host="tutorialCluster.amazonaws.com:27017" \
- --collection=restaurants \
- --db=business \
- --file=restaurant.json \
- --numInsertionWorkers 4 \
- --username=
\ - --password=
\ - --sslCAFile rds-combined-ca-bundle.pem ```
- 使用
mongodump转储数据 — 现在,Amazon DocumentDB 集群中已有数据,您可以使用mongodump实用工具对该数据进行二进制转储。
```
- mongodump --ssl \
- --host="tutorialCluster.us-east-1.docdb.amazonaws.com:27017"\
- --collection=restaurants \
- --db=business \
- --out=restaurantDump.bson \
- --numParallelCollections 4 \
- --username=
\ - --password=
\ - --sslCAFile rds-combined-ca-bundle.pem ```
- 删除
restaurants集合 — 在还原business数据库中的restaurants集合之前,必须先删除数据库中已有的集合,如下所示。
```
- use business ```
```
- db.restaurants.drop() ```
- 使用
mongorestore还原数据 — 在步骤 3 中对数据进行二进制转储后,您现在可以使用mongorestore实用工具将数据还原到 Amazon DocumentDB 集群。
```
- mongorestore --ssl \
- --host="tutorialCluster.us-east-1.docdb.amazonaws.com:27017" \
- --numParallelCollections 4 \
- --username=
\ - --password=
\ - --sslCAFile rds-combined-ca-bundle.pem restaurantDump.bson ```
- 使用
mongoexport导出数据 — 要完成本教程,请以 JSON 文件的格式从集群中导出数据,与您在步骤 1 中导入的文件没有什么不同。
```
- mongoexport --ssl \
- --host="tutorialCluster.node.us-east-1.docdb.amazonaws.com:27017" \
- --collection=restaurants \
- --db=business \
- --out=restaurant2.json \
- --username=
\ - --password=
\ - --sslCAFile rds-combined-ca-bundle.pem ```
- 验证 — 您可以使用以下命令验证步骤 5 的输出是否会产生与步骤 1 相同的结果。
```
- wc -l restaurant.json ```
此命令的输出:
```
- 2548 restaurant.json ```
```
- wc -l restaurant2.json ```
此命令的输出:
```
- 2548 restaurant2.json ```
