AWS DMS タスクでターゲットレイテンシーが高い場合のトラブルシューティング方法を教えてください。
最終更新日: 2020 年 1 月 23 日
フルロードと変更データキャプチャ (CDC) の AWS Database Migration Service (AWS DMS) タスクを実行しています。ソースレイテンシーは高くありませんが、ターゲットレイテンシーは高いか、増大しています。AWS DMS 移行タスクでターゲットレイテンシーが高い場合のトラブルシューティング方法を教えてください。
簡単な説明
Amazon CloudWatch メトリクスを使用して、レプリケーションタスクの統計をモニタリングできます。具体的には、CDCLatencySource と CDCLatencyTarget をモニタリングして、進行中のレプリケーションフェーズ (CDC) のレプリケーションレイテンシーを特定できます。CDCLatencySource メトリクスは、ソースとレプリケーションインスタンス間のレイテンシーです。CDCLatencyTarget メトリクスは、レプリケーションインスタンスとターゲット間のレイテンシーです。詳細については、「レプリケーションタスクのメトリクス」を参照してください。
CDCLatencySource が高いということは、ソースから変更をキャプチャするプロセスが遅れていることを意味します。また、CDCLatencyTarget が高いということは、変更イベントをターゲットに適用するプロセスが遅れていることを意味します。CDCLatencySource と CDCLatencyTarget の両方が高い場合、最初に CDCLatencySource を調査してください。ターゲットレイテンシーはソースレイテンシーと比べ、常に同じかそれより大きいためです。つまり、CDCLatencyTarget が高いということは、ソースからの変更イベントのキャプチャに遅延が生じていることを示唆します。CDCLatencySource が高くなく、CDCLatencyTarget が高い場合、そのレイテンシーは次の原因によって引き起こされている可能性があります。
- ターゲットにプライマリキーまたはインデックスがない
- ターゲットにリソースのボトルネックがある
- レプリケーションインスタンスにリソースのボトルネックがある
- レプリケーションインスタンスとターゲットの間にネットワークの問題がある
これらの問題を解決するには、「ベストプラクティスとトラブルシューティング」を参照してください。
解決方法
ターゲットにプライマリキーまたはインデックスがない
デフォルトでは、AWS DMS は、他のアプリケーションと同様に、データ操作言語 (DML) ステートメント (INSERT、UPDATE、DELETE など) によってターゲットに変更を書き込みます。必要なインデックスが配置されていないために、UPDATE や DELETE などの変更処理が、テーブル全体のスキャンを開始させる場合があります。テーブル全体のスキャンは、ターゲット側におけるパフォーマンス上の問題につながることがあります。これらのスキャンにより、ターゲット側でのレイテンシーが発生します。特にターゲットスキーマを手動で作成した場合は、ターゲットデータベーススキーマを確認してください。MySQL のスロークエリログ、PostgreSQL の pg_stat_activity、クエリプランなど、ターゲットデータベースメカニズムを使用してスロークエリを識別します。ターゲットが Amazon Redshift の場合、テーブルのディストリビューションスタイルも確認してください。すべての分散スタイルは、テーブルへのデータの挿入または更新に時間がかかるため、ターゲットレイテンシーが発生する可能性があります。
ターゲットにリソースのボトルネックがある
ターゲットに十分なリソースがない場合、ターゲットは AWS DMS が送信するレートで変更を受け入れることができません。これにより、ターゲットとターゲットレイテンシーでリソースのボトルネックが発生する可能性があります。これは、他のプロセスがターゲットのリソースを消費している場合にも発生する可能性があります。ターゲットが AWS でホストされている場合、CloudWatch メトリクススからのリソース統計を確認します。
レプリケーションインスタンスにリソースのボトルネックがある
移行を処理するのに十分なリソース (CPU、メモリ、ネットワーク、iOPS) があるレプリケーションインスタンスを選択します。CloudWatch メトリクスを使用してレプリケーションインスタンスリソースをモニタリングできます。
レプリケーションインスタンスとターゲット間でのネットワークの問題
ネットワーク帯域幅とレイテンシーの関係も、特にターゲットがオンプレミスデータベースである場合、またはクロスリージョンレプリケーションで AWS DMS を使用している場合などに、レイテンシーの問題を引き起こす可能性があります。
ベストプラクティスとトラブルシューティング
ターゲットが Amazon Relational Database Service (Amazon RDS) の場合、「AWS DMS 移行のパフォーマンスの向上」のベストプラクティスに従ってください。Amazon RDS には、バックアップウィンドウ内で動作する自動バックアップメカニズムがあります。これにより、Amazon RDS は移動したデータをバックアップしています。ターゲット DB インスタンスのスナップショットがキャプチャー中であった場合、AWS DMS では変更をターゲットに適用する際に問題が発生する可能性があります。その結果、スナップショットのキャプチャリングが完了するまで、ターゲットレイテンシーが増加します。ターゲットが Amazon Elastic Compute Cloud (Amazon EC2) またはオンプレミスデータベースである場合は、ターゲットデータベースのバックアップメカニズムを確認します。
一部のタスク設定では、ターゲットへの変更の書き込みが遅くなることがあります。変更のレートが高いソースから進行中のレプリケーションを実行する場合は、BatchApplyEnabled の使用を検討してください。詳細については、「Debugging your AWS DMS migrations: What to do when things go wrong?」(AWS DMS 移行のデバッグ: 物事がうまくいかない場合の対処方法) の「BatchApplyEnabled」セクションを参照してください。
BatchApplyEnabled を [True] に設定するには、次のように、AWS Command Line Interface (AWS CLI) を使用して modify-replication-task コマンドを実行します。
aws dms modify-replication-task --replication-task-arn arn:aws:dms:ap-northeast-1:123456789012:task:ABCDEFGHIJKLMNOPQRSTUVWXYZ --replication-task-settings "{\"TargetMetadata\":{\"BatchApplyEnabled\":true}}"
関連情報
Change processing tuning settings (処理チューニング設定の変更)