AWS Database Migration Service を使用して Amazon DocumentDB クラスターをアップグレードする
重要
Amazon DocumentDB は MongoDB と同じサポートライフサイクルに従わず、MongoDB のライフサイクルの終了スケジュールは Amazon DocumentDB には適用されません。Amazon DocumentDB 3.6 のライフサイクル終了に関する現在の計画はありません。既存の MongoDB 3.6 ドライバ、アプリケーション、ツールは引き続き Amazon DocumentDB と連携します。
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: 変更ストリームログの保持期間を変更する
次に、変更ストリームに変更イベントを保持したい期間に基づいて、変更ストリームの保持期間を変更します。例えば、AWS DMS を使用した Amazon DocumentDB クラスターの移行に 12 時間かかると予想される場合、変更ストリームの保持を 12 時間を超える値に設定する必要があります。Amazon DocumentDB クラスターのデフォルトの保持期間は 3 時間です。AWS マネジメントコンソール または AWS CLI を使用して、Amazon DocumentDB クラスターの変更ストリームログの保持期間を 1 時間から 7 日間に変更できます。さらなる詳細については、「変更ストリームログの保持期間を変更するには」を参照してください。
ステップ 3: インデックスを移行する
Amazon DocumentDB クラスターと同じインデックスを、Amazon DocumentDB クラスター上に作成します。AWS DMS はデータの移行を処理しますが、インデックスは移行しません。インデックスを移行するには、Amazon DocumentDB インデックスツールを使用して、Amazon DocumentDB クラスターからインデックスをエクスポートします。このツールを入手するには、Amazon DocumentDB ツール GitHub リポジトリのクローンを作成し、README.md
次の例では、各 ユーザー入力プレースホルダー を独自の情報に置き換えます。
次のコードは、Amazon DocumentDB クラスターからインデックスをダンプします。
python migrationtools/documentdb_index_tool.py --dump-indexes --urimongodb://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 --urimongodb://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 レプリケーションインスタンスを作成するには
-
AWS DMS コンソール
を開きます。 -
ナビゲーションペインで [Replication instances] (レプリケーション インスタンス) を選択します。
-
[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 (パブリックアクセス可能)] を有効にします。
[Create replication instance] (レプリケーションインスタンスの作成) を選択します。
ステップ 5: アップグレード元の AWS DMS エンドポイントを作成する
ソースエンドポイントは、ソース Amazon DocumentDB クラスターに使用されます。
ソースエンドポイントを作成するには
-
AWS DMS コンソール
を開きます。 -
ナビゲーションペインで、[エンドポイント] を選択します。
-
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 クラスターのプライマリパスワードを入力します。
-
データベース については、アップグレードするデータベース名を入力します。
接続をテストして、正常にセットアップされたことを確認します。
[エンドポイントの作成] を選択します。
注記
AWS DMS では、一度に移行できるデータベースは 1 つのみです。
ステップ 6: アップグレード先の AWS DMS エンドポイントを作成する
ターゲットエンドポイントは Amazon DocumentDB クラスター用です。
ターゲットエンドポイントを作成するには
-
AWS DMS コンソール
を開きます。 -
ナビゲーションペインで、[エンドポイント] を選択します。
-
[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 クラスターのプライマリパスワードを入力します。
-
データベース名 については、ソースエンドポイントの設定に使用したのと同じデータベース名を入力します。
-
接続をテストして、正常にセットアップされたことを確認します。
-
[エンドポイントの作成] を選択します。
ステップ 7: 移行タスクの作成と実行
AWS DMS のタスクは、レプリケーションインスタンスをソースインスタンスおよびターゲットインスタンスにバインドします。タスクを作成するときに、ソースエンドポイント、ターゲットエンドポイント、レプリケーションインスタンスおよび移行設定を特定します。AWS DMS タスクは、既存データの移行、既存のデータの移行と継続的な変更のレプリケートまたはデータ変更のみのレプリケートという 3 つの異なる移行タイプで作成できます。このウォークスルーの目的は、Amazon DocumentDB クラスターを最小限のダウンタイムでアップグレードすることなので、手順では既存のデータを移行し、進行中の変更をレプリケートするオプションを利用します。このオプションを選択すると、AWS DMS は既存のデータの移行中に変更をキャプチャします。AWS DMS では、バルクデータのロード後でも変更のキャプチャと適用が行われます。最終的にソースデータベースとターゲットデータベースは同期され、移行に伴うダウンタイムは最小限に抑えられます。
以下は、ダウンタイムを最小限に抑えた移行のための移行タスクの作成手順です。
-
AWS DMS コンソール
を開きます。 -
ナビゲーションペインで、[データベース移行タスク] を選択します。
-
[データベース移行タスクの作成] を選択し、[タスク設定] セクションに次の情報を入力します。
[タスク識別子] に、覚えやすい名前を入力します (例:
my-dms-upgrade-task)。[記述型 Amazon リソースネーム (ARN)] には、デフォルトの DMS ARN を上書きするわかりやすい名前を入力します。
[Replication instance (レプリケーションインスタンス)] で、「ステップ 4: AWS DMS レプリケーションインスタンスを作成する」で作成したレプリケーションインスタンスを選択します。
[ソースデータベースエンドポイント] で、「ステップ 5: アップグレード元の AWS DMS エンドポイントを作成する」で作成したソースエンドポイントを選択します。
[ターゲットデータベースエンドポイント] で、「ステップ 6: アップグレード先の AWS DMS エンドポイントを作成する」で作成したターゲットエンドポイントを選択します。
-
[移行タイプ] では、[移行とレプリケート] を選択します。
-
[タスク設定] セクションで、以下の情報を入力します。
-
[ターゲットテーブル準備モード] セクションで、[何もしない]を選択します。これにより、ステップ 3 で作成したインデックスが削除されないようになります。
-
[タスクログ] のサブセクションで、[CloudWatch ログをオンにする] を選択します。
-
移行タスクのスタートアップ の設定については、[作成時に自動で設定する] を選択します。これにより、移行タスクを作成すると、自動的に移行タスクが開始されます。
-
[データベース移行タスクの作成] を選択します。
-
AWS DMS は、ソース Amazon DocumentDB クラスターからターゲット Amazon DocumentDB クラスターへのデータの移行を開始します。タスクのステータスが、[Starting (開始中)] から [Running (実行中)] に変わります。AWS DMS のコンソールでタスクを選択することにより、進捗状況をモニターすることができます。数分/時間後 (移行のサイズに応じて)、ステータスが [ロード完了、レプリケーション継続中] に変わります。これにより AWS DMS は、ソース Amazon DocumentDB クラスターのターゲット Amazon DocumentDB クラスターへのフルロード移行を完了し、変更イベントをレプリケートしています。
最終的には、ソースとターゲットが同期します。同期しているかどうかを確認するためには、コレクションの count() 操作で、すべての変更イベントが移行されたことを確認できます。
ステップ 8: アプリケーションエンドポイントから Amazon DocumentDB クラスター への変更
フルロードが完了し、CDC プロセスが継続的にレプリケートされると、アプリケーションのデータベース接続エンドポイントをソース Amazon DocumentDB クラスターからターゲット Amazon DocumentDB クラスター クラスターに変更できます。