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

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

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

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

mongodump

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

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

示例用法

下面是的的使用示例。mongodumpAmazon DocumentDB 集群中的实用程序,sample-cluster.

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 启动一个工作线程。

示例用法

下面是使用的的的示例mongorestoreAmazon DocumentDB 集群中的实用程序,sample-cluster.

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 作业来提高性能。

示例用法

下面是的的使用示例。mongoexportAmazon DocumentDB 集群中的工具,sample-cluster.

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)。

示例用法

下面是使用的的的示例mongoimportAmazon DocumentDB 集群中的工具,sample-cluster.

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

教程

下面的教程介绍如何使用mongodumpmongorestoremongoexport, 和mongoimport用于将数据移入和移出 Amazon DocumentDB 集群的实用工具。

  1. 先决条件— 在开始之前,请确保您的 Amazon DocumentDB 集群已配置,并且您有权访问与您的集群所在的同一 VPC 中的 Amazon EC2 实例。有关更多信息,请参阅使用 Amazon EC2 Connect

    要能够使用 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. 删除restaurantscollection— 在恢复之前restaurantsbusiness数据库中,您必须先删除数据库中已有的集合,如下所示。

    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