

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を使用した Amazon DocumentDB クラスターのアップグレード AWS Database Migration Service
<a name="docdb-migration.versions"></a>

**重要**  
Amazon DocumentDB は MongoDB と同じサポートライフサイクルに従わず、MongoDB のライフサイクルの終了スケジュールは Amazon DocumentDB には適用されません。

を使用して、Amazon DocumentDB クラスターを最小限のダウンタイムで上位バージョンにアップグレードできます AWS DMS。 AWS DMS は、古い Amazon DocumentDB バージョン、リレーショナルデータベース、非リレーショナルデータベースからターゲット Amazon DocumentDB クラスターに簡単に移行できるフルマネージドサービスです。

**Topics**
+ [ステップ 1: 変更ストリームを有効にする](#docdb-migration.versions-step1)
+ [ステップ 2: 変更ストリームログの保持期間を変更する](#docdb-migration.versions-step2)
+ [ステップ 3: インデックスを移行する](#docdb-migration.versions-step3)
+ [ステップ 4: AWS DMS レプリケーションインスタンスを作成する](#docdb-migration.versions-step4)
+ [ステップ 5: AWS DMS ソースエンドポイントを作成する](#docdb-migration.versions-step5)
+ [ステップ 6: AWS DMS ターゲットエンドポイントを作成する](#docdb-migration.versions-step6)
+ [ステップ 7: 移行タスクの作成と実行](#docdb-migration.versions-step7)
+ [ステップ 8: アプリケーションエンドポイントから Amazon DocumentDB クラスター への変更](#docdb-migration.versions-step8)

## ステップ 1: 変更ストリームを有効にする
<a name="docdb-migration.versions-step1"></a>

最小限のダウンタイム移行を実行するには、クラスターの変更ストリームへのアクセス AWS DMS が必要です。[Amazon DocumentDB 変更ストリーム](https://docs.aws.amazon.com/documentdb/latest/developerguide/change_streams.html#change_streams-enabling) は、クラスターのコレクションとデータベース内で発生する変更イベントの時系列シーケンスを提供します。変更ストリームから読み取ると AWS DMS 、 は変更データキャプチャ (CDC) を実行し、ターゲット Amazon DocumentDB クラスターに増分更新を適用できます。

特定のデータベースのすべてのコレクションの変更ストリームを有効にするには、[mongo] シェルを使用して Amazon DocumentDB クラスターを認証し、次のコマンドを実行します。

```
db.adminCommand({modifyChangeStreams: 1,
    database: "db_name",
    collection: "", 
    enable: true});
```

## ステップ 2: 変更ストリームログの保持期間を変更する
<a name="docdb-migration.versions-step2"></a>

次に、変更ストリームに変更イベントを保持したい期間に基づいて、変更ストリームの保持期間を変更します。例えば、 を使用した Amazon DocumentDB クラスターの移行 AWS DMS に 12 時間かかることが予想される場合は、変更ストリームの保持期間を 12 時間を超える値に設定する必要があります。Amazon DocumentDB クラスターのデフォルトの保持期間は 3 時間です。 AWS マネジメントコンソール または を使用して、Amazon DocumentDB クラスターの変更ストリームログの保持期間を 1 時間から 7 日の間で変更できます AWS CLI。さらなる詳細については、「[変更ストリームログの保持期間を変更するには](https://docs.aws.amazon.com/documentdb/latest/developerguide/change_streams.html#change_streams-modifying_log_retention)」を参照してください。

## ステップ 3: インデックスを移行する
<a name="docdb-migration.versions-step3"></a>

Amazon DocumentDB クラスターと同じインデックスを、Amazon DocumentDB クラスター上に作成します。はデータの移行 AWS DMS を処理しますが、インデックスは移行されません。インデックスを移行するには、Amazon DocumentDB インデックスツールを使用して、Amazon DocumentDB クラスターからインデックスをエクスポートします。このツールを入手するには、Amazon DocumentDB ツール GitHub リポジトリのクローンを作成し、[https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md](https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md) 中の手順に従います。このツールは、Amazon DocumentDB クラスターと同じ Amazon VPC で実行されている Amazon EC2 インスタンスまたは AWS Cloud9 環境から実行できます。 Amazon DocumentDB 

次の例では、各 *ユーザー入力プレースホルダー* を独自の情報に置き換えます。

次のコードは、Amazon DocumentDB クラスターからインデックスをダンプします。

```
python migrationtools/documentdb_index_tool.py --dump-indexes
--uri mongodb://sample-user:user-password@sample-source-cluster.node.us-east 1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'
--dir ~/index.js/ 

2020-02-11 21:51:23,245: Successfully authenticated to database: admin2020-02-11 21:46:50,432: Successfully connected to instance docdb-40-xx.cluster-xxxxxxxx.us-east-1.docdb.amazonaws.com:27017
2020-02-11 21:46:50,432: Retrieving indexes from server...2020-02-11 21:46:50,440: Completed writing index metadata to local folder: /home/ec2-user/index.js/
```

インデックスが正常にエクスポートされたら、ターゲットの Amazon DocumentDB クラスター中にそれらのインデックスを復元します。前のステップでエクスポートしたインデックスを復元するには、Amazon DocumentDB インデックスツールを使用します。次のコマンドは、指定したディレクトリから Amazon DocumentDB クラスター中のインデックスを復元します。

```
python migrationtools/documentdb_index_tool.py --restore-indexes
--uri mongodb://sample-user:user-password@sample-destination-cluster.node.us-east 1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'
--dir ~/index.js/ 

2020-02-11 21:51:23,245: Successfully authenticated to database: admin2020-02-11 21:51:23,245: Successfully connected to instance docdb-50-xx.cluster-xxxxxxxx.us-east-1.docdb.amazonaws.com:27017
2020-02-11 21:51:23,264: testdb.coll: added index: _id
```

インデックスを正しく復元したことを確認するには、Mongo シェルを使用して Amazon DocumentDB クラスターに接続し、特定のコレクションのインデックスをリストします。以下のコードを参照してください。

```
mongo --ssl 
--host docdb-xx-xx.cluster-xxxxxxxx.us-east-1.docdb.amazonaws.com:27017
--sslCAFile rds-ca-2019-root.pem --username documentdb --password documentdb

db.coll.getIndexes()
```

## ステップ 4: AWS DMS レプリケーションインスタンスを作成する
<a name="docdb-migration.versions-step4"></a>

 AWS DMS レプリケーションインスタンスは、ソース Amazon DocumentDB クラスターに接続してデータを読み取り、ターゲット Amazon DocumentDB クラスターに書き込みます。 AWS DMS レプリケーションインスタンスは、一括ロードと CDC オペレーションの両方を実行できます。この処理のほとんどはメモリ内で行われます。ただし、大きいトランザクションではディスク上でのバッファリングが必要になることがあります。キャッシュされたトランザクションとログファイルもディスクに書き込まれます。データが移行されると、レプリケーションインスタンスは変更イベントをストリーミングして、ソースとターゲットが同期していることを確認します。

** AWS DMS レプリケーションインスタンスを作成するには:**

1.  AWS DMS [コンソール](https://console.aws.amazon.com/dms/v2)を開きます。

1. ナビゲーションペインで **[Replication instances]** (レプリケーション インスタンス) を選択します。

1. [**Create replication instance (レプリケーションインスタンスの作成)**] を選択し、次の情報を入力します。
   +  名前については、希望する名前を入力します。例えば、`docdb36todocdb40`。
   +  **説明** については、選んだ説明を入力します。リストアイテムについては、Amazon DocumentDB 3.6 を Amazon DocumentDB 4.0 レプリケーションインスタンスに。
   + **インスタンスクラス** については、必要に応じてサイズを選択します。
   + **エンジンバージョン** については、`3.4.1.` を選択します。
   + **Amazon VPC** については、ソースとターゲットの Amazon DocumentDB クラスターを収容する Amazon VPC を選択します。
   +  **ストレージ割り当て** (GiB) については、デフォルトの 50 GiB を使用します。書き込みスループットのワークロードが高い場合は、ワークロードに合わせてこの値を増やします。
   + **マルチ AZ** については、高可用性とフェイルオーバーサポートが必要な場合は **はい** を選択します。
   +  [**Publicly accessible (パブリックアクセス可能)**] を有効にします。  
![\[イメージ: 設定可能な 10 個のフィールドとボタンを示すレプリケーションインスタンス設定ダイアログ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/replication-instance-config.png)

1. **[Create replication instance]** (レプリケーションインスタンスの作成) を選択します。

## ステップ 5: AWS DMS ソースエンドポイントを作成する
<a name="docdb-migration.versions-step5"></a>

ソースエンドポイントは、ソース Amazon DocumentDB クラスターに使用されます。

**ソースエンドポイントを作成するには**

1.  AWS DMS [コンソール](https://console.aws.amazon.com/dms/v2)を開きます。

1. ナビゲーションペインで、**[エンドポイント]** を選択します。

1. `Create endpoint` を選択し、以下の情報を入力します。
   + [**Endpoint type (エンドポイントタイプ)**] で [**Source (ソース)**] を選択します。
   + >**エンドポイント識別子** については、覚えやすい名前を入力します (例: `docdb-source`)。
   + **ソースエンジン** については、`docdb` を選択します。
   + **サーバー名** については、Amazon DocumentDB クラスターの DNS 名を入力します。
   + **ポート** については、ソース Amazon DocumentDB クラスターのポート番号を入力します。
   + **SSL モード** については、`verify-full` を選択します。
   + **CA 証明書** については、**新しい CA 証明書を追加する** を選択します。TLS 接続バンドルを作成するために、[新しい CA 証明書](https://truststore.pki.rds.amazonaws.com/global/global-bundle.p7b) をダウンロードします。**証明書識別子** については、`rds-combined-ca-bundle` を入力します。[**Import certificate file (証明書ファイルのインポート)**] で、[**Choose file (ファイルの選択)**] を選択し、以前にダウンロードした `.pem` ファイルに移動します。ファイルを選択して開きます。**証明書をインポートする** を選択し、次に **証明書を選択する** のドロップダウンから `rds-combined-ca-bundle` を選択します。
   + **[ユーザーネーム]** には、アップグレード元の Amazon DocumentDB クラスターのプライマリユーザー名を入力します。
   + **[パスワード]** には、アップグレード元の Amazon DocumentDB クラスターのプライマリパスワードを入力します。
   + **データベース** については、アップグレードするデータベース名を入力します。  
![\[イメージ: 9 つの設定可能なフィールドとドロップダウンメニューを示す AWS DMS ソースのエンドポイント設定ダイアログ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/endpoint-config.png)

1. 接続をテストして、正常にセットアップされたことを確認します。  
![\[イメージ: 2 つのドロップダウンメニュー、テストボタン、実行されたテストのリストを示す AWS DMS ソースのテストエンドポイント接続ダイアログ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/test-endpoint-config.png)

1. **エンドポイントの作成** を選択します。

**注記**  
AWS DMS は一度に 1 つのデータベースのみを移行できます。

## ステップ 6: AWS DMS ターゲットエンドポイントを作成する
<a name="docdb-migration.versions-step6"></a>

ターゲットエンドポイントは Amazon DocumentDB クラスター用です。

**ターゲットエンドポイントを作成するには**

1. [AWS DMS コンソール](https://console.aws.amazon.com/dms/v2)を開きます。

1. ナビゲーションペインで、**[エンドポイント]** を選択します。

1. [**Create endpoint (エンドポイントの作成)**] を選択し、次の情報を入力します。
   + [**Endpoint type (エンドポイントタイプ)**] で [**Target (ターゲット)**] を選択します。
   + [**Endpoint identifier (エンドポイント識別子)**] に、覚えやすい名前を入力します (例: `docdb-target`)。
   + **ソースエンジン** については、`docdb` を選択します。
   + **サーバー名** については、ターゲット Amazon DocumentDB クラスターの DNS 名を入力します。
   + **ポート** については、ターゲット Amazon DocumentDB クラスターのポート番号を入力します。
   + **SSL モード** については、`verify-full` を選択します。
   + **CA 証明書**については、**証明書を選択する** というドロップダウンから既存の `rds-combined-ca-bundle` 証明書を選択します。
   + **[ユーザーネーム]** には、アップグレード先の Amazon DocumentDB クラスターのプライマリユーザー名を入力します。
   + **[パスワード]** については、アップグレード先の Amazon DocumentDB クラスターのプライマリパスワードを入力します。
   + **データベース名** については、ソースエンドポイントの設定に使用したのと同じデータベース名を入力します。  
![\[イメージ: 9 つの設定可能なフィールドとドロップダウンメニューを示す AWS DMS ターゲットのエンドポイント設定ダイアログ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/target-endpoint-config.png)

1. 接続をテストして、正常にセットアップされたことを確認します。  
![\[イメージ: 2 つのドロップダウンメニュー、テストボタン、実行されたテストのリストを示す AWS DMS ターゲットのテストエンドポイント接続ダイアログ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/test-target-endpoint.png)

1. **エンドポイントの作成** を選択します。

## ステップ 7: 移行タスクの作成と実行
<a name="docdb-migration.versions-step7"></a>

 AWS DMS タスクは、レプリケーションインスタンスをソースインスタンスとターゲットインスタンスにバインドします。タスクを作成するときに、ソースエンドポイント、ターゲットエンドポイント、レプリケーションインスタンスおよび移行設定を特定します。 AWS DMS タスクは、既存のデータの移行、既存のデータの移行、進行中の変更のレプリケート、データ変更のレプリケートのみの 3 つの異なる移行タイプで作成できます。このウォークスルーの目的は、Amazon DocumentDB クラスターを最小限のダウンタイムでアップグレードすることなので、手順では既存のデータを移行し、進行中の変更をレプリケートするオプションを利用します。このオプションでは、 は既存のデータの移行中に変更を AWS DMS キャプチャします。 は、バルクデータがロードされた後も変更をキャプチャして適用 AWS DMS し続けます。最終的にソースデータベースとターゲットデータベースは同期され、移行に伴うダウンタイムは最小限に抑えられます。

**以下は、ダウンタイムを最小限に抑えた移行のための移行タスクの作成手順です。**

1.  AWS DMS [コンソール](https://console.aws.amazon.com/dms/v2)を開きます。

1. ナビゲーションペインで、**[データベース移行タスク]** を選択します。

1. **[データベース移行タスクの作成]** を選択し、**[タスク設定]** セクションに次の情報を入力します。
   + **[タスク識別子]** に、覚えやすい名前を入力します (例: `my-dms-upgrade-task`)。
   + **[記述型 Amazon リソースネーム (ARN)]** には、デフォルトの DMS ARN を上書きするわかりやすい名前を入力します。
   + [**Replication instance (レプリケーションインスタンス)**] で、「[ステップ 4: AWS DMS レプリケーションインスタンスを作成する](#docdb-migration.versions-step4)」で作成したレプリケーションインスタンスを選択します。
   + [**ソースデータベースエンドポイント**] で、「[ステップ 5: AWS DMS ソースエンドポイントを作成する](#docdb-migration.versions-step5)」で作成したソースエンドポイントを選択します。
   + [**ターゲットデータベースエンドポイント**] で、「[ステップ 6: AWS DMS ターゲットエンドポイントを作成する](#docdb-migration.versions-step6)」で作成したターゲットエンドポイントを選択します。
   + [**移行タイプ**] では、[**移行とレプリケート**] を選択します。  
![\[イメージ: 移行タスク向けタスク設定ダイアログ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/task-config.png)

1. **[タスク設定]** セクションで、以下の情報を入力します。
   + [**ターゲットテーブル準備モード**] セクションで、[**何もしない**]を選択します。これにより、ステップ 3 で作成したインデックスが削除されないようになります。
   + [**タスクログ**] のサブセクションで、[**CloudWatch ログをオンにする**] を選択します。
   + **移行タスクのスタートアップ** の設定については、[**作成時に自動で設定する**] を選択します。これにより、移行タスクを作成すると、自動的に移行タスクが開始されます。
   + [**データベース移行タスクの作成**] を選択します。

AWS DMS は、ソース Amazon DocumentDB クラスターからターゲット Amazon DocumentDB クラスターへのデータの移行を開始するようになりました。タスクのステータスが、[Starting (開始中)] から [Running (実行中)] に変わります。 AWS DMS コンソールでタスクを選択すると、進行状況をモニタリングできます。数分/時間後 (移行のサイズに応じて)、ステータスが [ロード完了、レプリケーション継続中] に変わります。つまり、 AWS DMS はソース Amazon DocumentDB クラスターからターゲット Amazon DocumentDB クラスターへのフルロード移行を完了し、変更イベントをレプリケートしています。

![\[イメージ: 移行のサマリーダイアログ。\]](http://docs.aws.amazon.com/ja_jp/documentdb/latest/developerguide/images/migration-load-complete.png)


最終的には、ソースとターゲットが同期します。同期しているかどうかを確認するためには、コレクションの `count()` 操作で、すべての変更イベントが移行されたことを確認できます。

## ステップ 8: アプリケーションエンドポイントから Amazon DocumentDB クラスター への変更
<a name="docdb-migration.versions-step8"></a>

フルロードが完了し、CDC プロセスが継続的にレプリケートされると、アプリケーションのデータベース接続エンドポイントをソース Amazon DocumentDB クラスターからターゲット Amazon DocumentDB クラスター クラスターに変更できます。