

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 傾印、還原、匯入和匯出資料
<a name="backup_restore-dump_restore_import_export_data"></a>

您可以使用 `mongodump`、`mongoexport`、 `mongorestore`和 `mongoimport`公用程式，將資料移入和移出 Amazon DocumentDB 叢集。本節探討這些工具和組態的目的，以協助您達到更佳效能。

**MongoDB 資料庫工具版本需求**  
針對 Amazon DocumentDB 使用 MongoDB 資料庫工具，包括 100.11.0 版。 Amazon DocumentDB 若要下載，請參閱 [MongoDB 網站上的 MongoDB 資料庫工具版本](https://www.mongodb.com/download-center/database-tools/releases/archive)。 MongoDB 

**Topics**
+ [`mongodump`](#backup_restore-dump_restore_import_export_data-mongodump)
+ [`mongorestore`](#backup_restore-dump_restore_import_export_data-mongorestore)
+ [`mongoexport`](#backup_restore-dump_restore_import_export_data-mongoexport)
+ [`mongoimport`](#backup_restore-dump_restore_import_export_data-mongoimport)
+ [教學課程](#backup_restore-dump_restore_import_export_data-tutorial)

## `mongodump`
<a name="backup_restore-dump_restore_import_export_data-mongodump"></a>

該 `mongodump` 公用程式建立 MongoDB 資料庫的二進位 (BSON) 備份。由於以二進位格式存放資料所達到的大小效率，因此`mongodump`工具是希望將其還原至 Amazon DocumentDB 叢集時，從來源 MongoDB 部署傾印資料的偏好方法。

根據您用來執行 命令的執行個體或機器上可用的資源，您可以使用 `--numParallelCollections`選項增加從預設 1 傾印的平行集合數目，`mongodump`以加速您的 。一個良好的經驗法則是從 Amazon DocumentDB 叢集主要執行個體上每個 vCPU 一個工作者開始。

### 範例使用方式
<a name="backup_restore-dump_restore_import_export_data-mongodump-example"></a>

以下是 Amazon DocumentDB 叢集 中`mongodump`公用程式的範例用量`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 global-bundle.pem
```

## `mongorestore`
<a name="backup_restore-dump_restore_import_export_data-mongorestore"></a>

`mongorestore` 公用程式可讓您還原與 `mongodump` 公用程式一起建立的資料庫的二進位 (BSON) 備份。您可以在使用 `--numInsertionWorkersPerCollection` 選項還原期間，增加每個集合的工作者數目，提升還原效能 (預設為 1)。一個良好的經驗法則是從 Amazon DocumentDB 叢集主要執行個體上每個 vCPU 一個工作者開始。

### 範例使用方式
<a name="backup_restore-dump_restore_import_export_data-mongorestore-example"></a>

以下是 Amazon DocumentDB 叢集中 `mongorestore` 公用程式的範例用量`sample-cluster`。

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

## `mongoexport`
<a name="backup_restore-dump_restore_import_export_data-mongoexport"></a>

此`mongoexport`工具會將 Amazon DocumentDB 中的資料匯出為 JSON、CSV 或 TSV 檔案格式。`mongoexport` 工具是匯出需可人工或機器讀取之資料的偏好方法。

**注意**  
`mongoexport` 不直接支援平行匯出。不過，您可以藉由同時針對不同的集合執行多個 `mongoexport` 任務來提高效能。

### 範例使用方式
<a name="backup_restore-dump_restore_import_export_data-mongoexport-example"></a>

以下是 Amazon DocumentDB 叢集 中`mongoexport`工具的範例用量`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 global-bundle.pem
```

## `mongoimport`
<a name="backup_restore-dump_restore_import_export_data-mongoimport"></a>

此`mongoimport`工具會將 JSON、CSV 或 TSV 檔案的內容匯入 Amazon DocumentDB 叢集。您可以使用 `-–numInsertionWorkers` 參數來平行化和加速匯入 (預設值為 1)。

### 範例使用方式
<a name="backup_restore-dump_restore_import_export_data-mongoimport-example"></a>

以下是 Amazon DocumentDB 叢集 中`mongoimport`工具的範例用量`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 global-bundle.pem
```

## 教學課程
<a name="backup_restore-dump_restore_import_export_data-tutorial"></a>

下列教學課程說明如何使用 `mongodump`、`mongoexport`、 `mongorestore`和 `mongoimport`公用程式將資料移入和移出 Amazon DocumentDB 叢集。

1. **先決條件** — 開始之前，請確定已佈建 Amazon DocumentDB 叢集，而且您可以存取與叢集相同 VPC 中的 Amazon EC2 執行個體。如需詳細資訊，請參閱[使用 Amazon EC2 連線](connect-ec2.md)。

   為了能夠使用 mongo 公用程式工具，您必須在 EC2 執行個體中安裝 mongodb-org-tools 套件，如下所示。

   ```
   sudo yum install mongodb-org-tools-4.0.18
   ```

   由於 Amazon DocumentDB 預設使用 Transport Layer Security (TLS) 加密，因此您還必須下載 Amazon RDS 憑證授權機構 (CA) 檔案，以使用 mongo shell 進行連線，如下所示。

   ```
   wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
   ```

1. **下載範例資料**：在本教學課程中，您將下載一些包含餐廳相關資訊的範例資料。

   ```
   wget https://raw.githubusercontent.com/ozlerhakan/mongodb-json-files/master/datasets/restaurant.json
   ```

1. **將範例資料匯入 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 global-bundle.pem
   ```

1. **使用 傾印資料 `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 global-bundle.pem
   ```

1. **捨棄`restaurants`集合** - 在還原`business`資料庫中的`restaurants`集合之前，您必須先捨棄該資料庫中已存在的集合，如下所示。

   ```
   use business
   ```

   ```
   db.restaurants.drop()
   ```

1. **使用 還原資料 `mongorestore`** — 使用步驟 3 資料的二進位傾印，您現在可以使用 `mongorestore`公用程式將資料還原至 Amazon DocumentDB 叢集。

   ```
   mongorestore --ssl \
       --host="tutorialCluster.us-east-1.docdb.amazonaws.com:27017" \
       --numParallelCollections 4 \
       --username=<yourUsername> \
       --password=<yourPassword> \
       --sslCAFile global-bundle.pem restaurantDump.bson
   ```

1. **使用 匯出資料 `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 global-bundle.pem
   ```

1. **驗證** — 您可以使用下列命令，驗證步驟 5 的輸出是否產生與步驟 1 相同的結果。

   ```
   wc -l restaurant.json
   ```

   從這個命令的輸出：

   ```
   2548 restaurant.json
   ```

   ```
   wc -l restaurant2.json
   ```

   從這個命令的輸出：

   ```
   2548 restaurant2.json
   ```