AWS DMS タスクでターゲットレイテンシーが高い場合のトラブルシューティング方法を教えてください。

最終更新日: 2020 年 1 月 23 日

全ロードと変更データキャプチャ (CDC) の AWS Database Migration Service (AWS DMS) タスクを実行しています。ソースレイテンシーは高くありませんが、ターゲットレイテンシーは高いか、増加しています。AWS DMS 移行タスクでターゲットレイテンシーが高い場合のトラブルシューティング方法を教えてください。

簡単な説明

Amazon CloudWatch メトリクスを使用して、レプリケーションタスクの統計をモニタリングできます。具体的には、CDCLatencySourceCDCLatencyTarget をモニタリングして、進行中のレプリケーションフェーズ (CDC) のレプリケーションレイテンシーを特定できます。CDCLatencySource メトリクスは、ソースとレプリケーションインスタンス間のレイテンシーです。CDCLatencyTarget メトリクスは、レプリケーションインスタンスとターゲット間のレイテンシーです。詳細については、「レプリケーションタスクのメトリクス」を参照してください。

CDCLatencySource が高いということは、ソースから変更をキャプチャするプロセスが遅れていることを意味します。同時に、CDCLatencyTarget が高いということは、変更イベントをターゲットに適用するプロセスが遅れていることも意味します。CDCLatencySourceCDCLatencyTarget の両方が高い場合、先ず最初に 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 の使用を検討してください。詳細については、「AWS DMS 移行のデバッグ: 物事がうまくいかない場合の対処方法」の「BatchApplyEnabled」セクションを参照してください。

BatchApplyEnabledTrue に設定するには、次のように、AWS コマンドラインインターフェイス (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}}"

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合