を使用して Amazon DocumentDB クラスターをアップグレードする AWS Database Migration Service - Amazon DocumentDB

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

を使用して Amazon DocumentDB クラスターをアップグレードする AWS Database Migration Service

重要

Amazon DocumentDB は MongoDB と同じサポートライフサイクルに従っておらず、MongoDB のスケジュールは Amazon DocumentDB には適用されません。 end-of-life Amazon DocumentDB 3.6 の現在の計画はありません。既存の MongoDB 3.6 ドライバー、アプリケーション、ツールは引き続き Amazon DocumentDB で動作します。 end-of-life

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

ステップ 1: 変更ストリームを有効にします

ダウンタイムを最小限に抑えた移行を実行するには、 AWS DMS クラスターの変更ストリームにアクセスする必要があります。Amazon DocumentDB 変更ストリーム は、クラスターのコレクションとデータベース内で発生する変更イベントの時系列シーケンスを提供します。変更ストリームから読み取ることで AWS DMS 、変更データキャプチャ (CDC) を実行し、ターゲット Amazon DocumentDB クラスターに増分更新を適用できます。

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

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

ステップ 2: 変更ストリームログの保持期間を変更します

次に、変更ストリームに変更イベントを保持したい期間に基づいて、変更ストリームの保持期間を変更します。たとえば、Amazon DocumentDB クラスターの移行に 12 時間かかると予想される場合は、変更ストリームの保持期間を AWS DMS 12 時間を超える値に設定する必要があります。Amazon DocumentDB クラスターのデフォルトの保持期間は 3 時間です。 AWS Management Console またはを使用して、Amazon DocumentDB クラスターの変更ストリームログの保持期間を 1 時間から 7 日の間で変更できます。 AWS CLIさらなる詳細については、「変更ストリームログの保持期間を変更するには」を参照してください。

ステップ 3: インデックスを移行します

Amazon DocumentDB クラスターと同じインデックスを、Amazon DocumentDB クラスター上に作成します。 AWS DMS データの移行は処理しますが、インデックスは移行しません。インデックスを移行するには、Amazon DocumentDB インデックスツールを使用して、Amazon DocumentDB クラスターからインデックスをエクスポートします。このツールは、Amazon DocumentDB GitHub ツールリポジトリのクローンを作成し、に記載されている手順に従うことで入手できます。README.mdこのツールは、Amazon EC2 インスタンス、または Amazon Amazon DocumentDB クラスターと同じ Amazon VPC AWS Cloud9 で実行されている環境から実行できます。

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

次のコードは、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

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

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

  1. AWS DMS コンソールを開きます

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

  3. [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 (パブリックアクセス可能)] を有効にします。

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

ステップ 5: AWS DMS ソースエンドポイントを作成する

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

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

  1. AWS DMS コンソールを開きます

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

  3. Create endpoint を選択し、以下の情報を入力します。

    • [Endpoint type (エンドポイントタイプ)] で [Source (ソース)] を選択します。

    • >エンドポイント識別子 については、覚えやすい名前を入力します (例: docdb-source)。

    • ソースエンジン については、docdb を選択します。

    • サーバー名 については、Amazon DocumentDB クラスターの DNS 名を入力します。

    • ポート については、ソース Amazon DocumentDB クラスターのポート番号を入力します。

    • SSL モード については、verify-full を選択します。

    • CA 証明書 については、新しい CA 証明書を追加する を選択します。TLS 接続バンドルを作成するために、新しい CA 証明書 をダウンロードします。証明書識別子 については、rds-combined-ca-bundle を入力します。[Import certificate file (証明書ファイルのインポート)] で、[Choose file (ファイルの選択)] を選択し、以前にダウンロードした .pem ファイルに移動します。ファイルを選択して開きます。証明書をインポートする を選択し、次に 証明書を選択する のドロップダウンから rds-combined-ca-bundle を選択します。

    • [ユーザー名] には、ソース Amazon DocumentDB クラスターのプライマリユーザー名を入力します。

    • [パスワード] には、ソース Amazon DocumentDB クラスターのプライマリパスワードを入力します。

    • データベース については、アップグレードするデータベース名を入力します。

  4. 接続をテストして、正常にセットアップされたことを確認します。

  5. [エンドポイントの作成] を選択します。

注記

AWS DMS 一度に 1 つのデータベースしか移行できません。

ステップ 6: AWS DMS ターゲットエンドポイントを作成する

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

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

  1. AWS DMS コンソールを開きます。

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

  3. [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 クラスターのプライマリパスワードを入力します。

    • データベース名 については、ソースエンドポイントの設定に使用したのと同じデータベース名を入力します。

  4. 接続をテストして、正常にセットアップされたことを確認します。

  5. [エンドポイントの作成] を選択します。

ステップ 7: 移行タスクの作成と実行

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

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

  1. AWS DMS コンソールを開きます

  2. ナビゲーションペインで、[Tasks (タスク)] を選択します。

  3. [Create task (タスクの作成)] を選択し、次の情報を入力します。

  4. タスク設定」セクションで、CloudWatch ログを有効にします

  5. [テーブルマッピング] セクションでは [何もしない] を選択します。これにより、ステップ 3 で作成したインデックスが削除されないようになります。

  6. 移行タスクのスタートアップ の設定については、作成時に自動的に行う を選択します。これにより、移行タスクを作成すると、自動的に移行タスクが開始されます。

  7. [Create task] (タスクの作成) を選択します。

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

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

ステップ 8: アプリケーションエンドポイントから Amazon DocumentDB クラスター への変更

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