フルロードおよび変更データキャプチャ (CDC) AWS Database Migration Service (AWS DMS) タスクを実行しています。ソースレイテンシは高くありませんが、ターゲットレイテンシは高いか増加しています。
簡単な説明
Amazon CloudWatch メトリックスを使用して、レプリケーションタスクのメトリックスをモニタリングします。進行中のレプリケーションフェーズにおけるレプリケーションレイテンシーを特定するには、CDCLatencySource とCDCLatencyTarget をモニタリングします。CDCLatencySource メトリックは、ソースとレプリケーションインスタンスの間のレイテンシーです。CDCLatencyTarget メトリックは、レプリケーションインスタンスとターゲットの間のレイテンシーです。詳細については、「レプリケーションタスクメトリクス」を参照してください。
CdcLatencySource が高いということは、ソースから変更を取得するプロセスが遅れることを意味します。CdcLatencyTarget が高いということは、変更イベントをターゲットに適用するプロセスが遅れることを意味します。CDCLatencySource と CDCLatencyTarget の両方が高い場合は、最初に CDCLatencySource のトラブルシューティングを行います。ターゲットのレイテンシーは常にソースレイテンシーと同じかそれ以上だからです。CdcLatencyTarget が高いのは、ソースから変更イベントをキャプチャするのに遅延があるためと考えられます。CDCLatencySource の値が高くなく、CDCLatencyTarget の値が高い場合は、次の問題が原因でレイテンシーが発生する可能性があります。
- ターゲットにプライマリキーやインデックスがない。
- ターゲットにリソースのボトルネックがある。
- レプリケーションインスタンスにリソースのボトルネックがある。
- レプリケーションインスタンスとターゲットの間にネットワークの問題がある。
これらの問題を解決するには、次の解決策の「ベストプラクティスとトラブルシューティング」セクションを参照してください。
解決策
ターゲットにプライマリキーやインデックスがありません
デフォルトでは、AWS DMS はデータ操作言語 (DML) ステートメントを使用して、INSERT、UPDATE、DELETE などの変更をターゲットに書き込みます。必要なインデックスが設定されていないと、更新や削除などの変更によってテーブル全体がスキャンされる可能性があります。テーブル全体をスキャンすると、ターゲットのパフォーマンス上の問題が発生し、ターゲットに遅延が発生する可能性があります。特にターゲットスキーマを手動で作成した場合は、ターゲットデータベーススキーマを確認してください。MySQL のスロークエリログなどの低速クエリを特定するには、ターゲットデータベースのメカニズムを使用します。PostgreSQL には Amazon リレーショナルデータベースサービス (Amazon RDS) 向けの pg_stat_activity、またはクエリプランを使用します。ターゲットが Amazon Redshift の場合は、テーブルのディストリビューションスタイルも確認してください。分散スタイルはテーブルへのデータの挿入または更新に時間がかかるため、どの分散スタイルでもターゲットレイテンシが発生する可能性があります。
ターゲットのリソースボトルネック
ターゲットに十分なリソースがない場合、ターゲットは AWS DMS が送信するレートでは変更を受け入れることができません。これにより、ターゲットとターゲットのレイテンシーでリソースのボトルネックが発生する可能性があります。これは、他のプロセスがターゲットのリソースを消費する場合にも発生します。AWS がターゲットをホストしている場合は、CloudWatch メトリックスからリソース統計を確認します。
レプリケーションインスタンスのリソースのボトルネック
移行を処理するのに十分なリソースがあるレプリケーションインスタンスを選択してください。 CPU、メモリ、ネットワーク、または IOP。
CloudWatch メトリックスを使用して、レプリケーションインスタンスリソースをモニタリングします。
レプリケーションインスタンスとターゲット間のネットワークの問題
特にターゲットがオンプレミスのデータベースである場合や、AWS リージョン間のレプリケーションに AWS DMS を使用している場合は、ネットワーク帯域幅によってレイテンシーの問題が発生する可能性があります。
ベストプラクティスとトラブルシューティング
ターゲットが Amazon RDS の場合は、ベストプラクティスに従って AWS DMS 移行のパフォーマンスを向上させてください。Amazon RDS には、バックアップウィンドウ内で開始する自動バックアップメカニズムがあり、Amazon RDS は移動されたデータをバックアップします。ターゲット RDS DB インスタンスのスナップショットがキャプチャプロセスにある場合、サービスがターゲットに変更を適用するときに AWS DMS に問題が発生する可能性があります。その結果、スナップショットキャプチャが完了するまでのターゲットレイテンシが増加します。ターゲットが Amazon Elastic Compute Cloud (Amazon EC2) またはオンプレミスデータベースの場合は、ターゲットデータベースのバックアップメカニズムを確認してください。
タスク設定によっては、変更がターゲットに書き込まれるのが遅くなります。変化率の高いソースから継続的なレプリケーションを実行する場合は、BatchApplyEnabled を使用してください。詳細については、「AWS DMS 移行のデバッグ」の「BatchApplyEnabled」セクションを参照してください。 うまくいかないときはどうすればいいですか? パート 3
BatchApplyEnabled を True に設定するには、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}}"
**注:**AWS CLI コマンドを実行したときにエラーが表示される場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
関連情報
処理チューニング設定の変更