转储、还原、导入和导出数据 - Amazon DocumentDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

转储、还原、导入和导出数据

您可以使用 mongodumpmongorestoremongoexportmongoimport 实用工具将数据移入和移出 Amazon DocumentDB 集群。此部分讨论了所有这些工具和配置的用途,以帮助您实现更好的性能。

mongodump

mongodump 实用工具创建 MongoDB 数据库的二进制 (BSON) 备份。由于以二进制格式存储数据可实现较高的大小效率,因此,在希望将数据还原到 Amazon DocumentDB 集群中时,mongodump 工具是转储源 MongoDB 部署中的数据的首选方法。

根据用于执行命令的实例或计算机上的可用资源,您可以使用 --numParallelCollections 选项增加从默认 1 转储的并行连接的数量,从而加快 mongodump 的速度。一个好的经验法则是,在 Amazon DocumentDB 集群的主实例上,为每个 vCPU 启动一个工作线程。

注意

我们对 Amazon DocumentDB 推荐高达且包括版本 100.6.1 的 MongoDB 数据库工具。您可以在此处下载 MongoDB 数据库工具。

示例用法

下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongodump 实用工具的使用示例。

mongodump --ssl \ --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \ --collection=sample-collection \ --db=sample-database \ --out=sample-output-file \ --numParallelCollections 4 \ --username=sample-user \ --password=abc0123 \ --sslCAFile rds-combined-ca-cn-bundle.pem

mongorestore

利用 mongorestore 实用工具,您可以还原使用 mongodump 实用工具创建的数据库的二进制 (BSON) 备份。您可以通过使用 --numInsertionWorkersPerCollection 选项(默认值为 1)增加还原期间每个集合的工作线程数来提高还原性能。一个好的经验法则是,在 Amazon DocumentDB 集群的主实例上,为每个 vCPU 启动一个工作线程。

示例用法

下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongorestore 实用工具的使用示例。

mongorestore --ssl \ --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \ --username=sample-user \ --password=abc0123 \ --sslCAFile rds-combined-ca-cn-bundle.pem <fileToBeRestored>

mongoexport

mongoexport 工具将 Amazon DocumentDB 中的数据导出为 JSON、CSV 或 TSV 文件格式。mongoexport 工具是导出要求可供人类或机器读取的数据的首选方法。

注意

mongoexport 无法直接支持并行导出。但是,可以通过同时为不同的集合执行多个 mongoexport 作业来提高性能。

示例用法

下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongoexport 工具的使用示例。

mongoexport --ssl \ --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \ --collection=sample-collection \ --db=sample-database \ --out=sample-output-file \ --username=sample-user \ --password=abc0123 \ --sslCAFile rds-combined-ca-cn-bundle.pem

mongoimport

mongoimport 工具将 JSON、CSV 或 TSV 文件的内容导入 Amazon DocumentDB 集群中。可以使用 -–numInsertionWorkers 参数实现并行化和加快导入速度(默认值为 1)。

示例用法

下面是 Amazon DocumentDB 集群 sample-cluster 中的 mongoimport 工具的使用示例。

mongoimport --ssl \ --host="sample-cluster.node.us-east-1.docdb.amazonaws.com:27017" \ --collection=sample-collection \ --db=sample-database \ --file=<yourFile> \ --numInsertionWorkers 4 \ --username=sample-user \ --password=abc0123 \ --sslCAFile rds-combined-ca-cn-bundle.pem

教程

以下教程介绍如何使用 mongodumpmongorestoremongoexportmongoimport 实用工具将数据移入和移出 Amazon DocumentDB 集群。

  1. 先决条件 — 在开始之前,请确保您的 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.cn-north-1.amazonaws.com.cn/rds-downloads/rds-combined-ca-cn-bundle.pem
  2. 下载示例数据 — 在本教程中,您将下载一些包含餐厅相关信息的示例数据。

    wget https://raw.githubusercontent.com/ozlerhakan/mongodb-json-files/master/datasets/restaurant.json
  3. 将示例数据导入 Amazon DocumentDB 中 — 由于数据采用的是逻辑 JSON 格式,因此,您将使用 mongoimport 实用工具将数据导入 Amazon DocumentDB 集群中。

    mongoimport --ssl \ --host="tutorialCluster.amazonaws.com:27017" \ --collection=restaurants \ --db=business \ --file=restaurant.json \ --numInsertionWorkers 4 \ --username=<yourUsername> \ --password=<yourPassword> \ --sslCAFile rds-combined-ca-cn-bundle.pem
  4. 使用 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=<yourUsername> \ --password=<yourPassword> \ --sslCAFile rds-combined-ca-cn-bundle.pem
  5. 删除 restaurants 集合 — 在还原 business 数据库中的 restaurants 集合之前,必须先删除该数据库中已有的集合,如下所示。

    use business
    db.restaurants.drop()
  6. 使用 mongorestore 还原数据 — 在步骤 3 中对数据进行二进制转储后,您现在可以使用 mongorestore 实用工具将数据还原到 Amazon DocumentDB 集群。

    mongorestore --ssl \ --host="tutorialCluster.us-east-1.docdb.amazonaws.com:27017" \ --numParallelCollections 4 \ --username=<yourUsername> \ --password=<yourPassword> \ --sslCAFile rds-combined-ca-cn-bundle.pem restaurantDump.bson
  7. 使用 mongoexport 导出数据 — 要完成本教程,请以 JSON 文件的格式从集群中导出数据,与您在步骤 1 中导入的文件没有什么不同。

    mongoexport --ssl \ --host="tutorialCluster.node.us-east-1.docdb.amazonaws.com:27017" \ --collection=restaurants \ --db=business \ --out=restaurant2.json \ --username=<yourUsername> \ --password=<yourPassword> \ --sslCAFile rds-combined-ca-cn-bundle.pem
  8. 验证 — 您可以使用以下命令验证步骤 5 的输出是否会产生与步骤 1 相同的结果。

    wc -l restaurant.json

    此命令的输出:

    2548 restaurant.json
    wc -l restaurant2.json

    此命令的输出:

    2548 restaurant2.json