フルロードタスクと AWS Database Migration Service (AWS DMS) タスクにおいて、変更データキャプチャ (CDC) レプリケーションのパフォーマンスを改善したいです。ソースは大幅に遅延していないものの、ターゲットで高遅延が発生したり、遅延が増加したりしています。
簡単な説明
デフォルトでは、AWS DMS は CDC フェーズでトランザクション適用を行い、データをレプリケートします。タスクがソースから大量のトランザクションをキャプチャすることが原因で、ターゲットで遅延が発生する場合は、バッチ適用設定を有効化します。
注: Amazon Redshift のターゲットでは、デフォルトでバッチ適用が有効です。Amazon Simple Storage Service (Amazon S3) のターゲットでは、トランザクション適用が必要です。
バッチ適用は、プライマリキーまたはユニークインデックスを含むテーブルでのみ機能します。テーブルにプライマリキーまたはユニークインデックスが含まれない場合、一括適用では一括モードでの挿入のみが適用されます。その後、更新と削除は 1 件ずつ実行されます。テーブルにプライマリキーまたはユニークインデックスが含まれているにもかかわらず、個別モードに切り替わる場合は、「Amazon Redshift が個別モードに切り替わる原因に対処する方法を教えてください」を参照してください。
レプリケーションにラージバイナリオブジェクト (LOB) 列が含まれる場合、BatchApplyEnabled は制限付き LOB モードでのみ使用できます。詳しくは、「ターゲットメタデータのタスク設定」を参照してください。
注: BatchApplyEnabled が true に設定されており、ターゲットに一意の制約が適用されている場合、AWS DMS はエラーメッセージを表示します。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
BatchApplySetting は、デフォルトでは無効です。この設定を有効にするには、AWS CLI または AWS DMS コンソールを使用します。バッチ適用を有効化する前に、プログラムによるアクセス許可を持つ IAM ユーザーを作成します。
AWS CLI を使用してバッチ適用を有効にする
次の手順を実行します。
- AWS CLI を使用するシステムを開きます。
- configure コマンドを実行すると、AWS CLI プロンプトが開きます。
- AWS アクセスキー ID を入力します。
- AWS シークレットキー ID を入力します。
- AWS DMS リソースの AWS リージョンを入力します。
- 出力形式を入力します。
- タスクが停止状態であることを確認します。
- 次のバッチ設定で modify-replication-task コマンドを実行します。
aws dms modify-replication-task --replication-task-arn arn:aws:dms:region:123456789123:task:4VUCZ6ROH4ZYRIA25M3SE6NXCM --replication-task-settings "{\"TargetMetadata\":{\"BatchApplyEnabled\":true}}"
注: replication-task-arn を Amazon リソースネーム (ARN) に、region をリージョンに置き換えてください。
- AWS DMS コンソールを開きます。
- ナビゲーションペインの [移行または複製] で [タスク] を選択します。
- 目的のタスクを選択し、[タスク設定 (JSON)] を選択します。
- BatchApplyEnabled が enabled に設定されていることを確認します。
AWS DMS コンソールを使用してバッチ適用を有効にする
次の手順を実行します。
- AWS DMS コンソールを開きます。
- ナビゲーションペインの [移行または複製] で [タスク] を選択します。
- 目的のタスクを選択し、[変更] を選択します。
- [タスク設定] セクションで [JSON エディタ] を選択します。
- TargetMetadata の BatchApplyEnabled を true に変更します。
- [保存] を選択します。
バッチモードでタスクを実行した後に、CDCLatencyTarget が高い場合のトラブルシューティング
タスクをバッチモードで実行した後に CDCLatencyTarget の値が高い場合、次の原因で遅延が発生している可能性があります。
- プライマリインデックスとセカンダリインデックスが存在しないため、長時間実行するトランザクションが発生した場合。
- リソースの可用性が不足しており、ターゲットでワークロードを処理できない場合。
- AWS DMS レプリケーションインスタンスでリソースの競合が多発している場合。
高遅延のトラブルシューティングについては、「AWS Database Migration Service で遅延の問題が発生する場合のトラブルシューティング」を参照してください。
関連情報
AWS DMS タスクのモニタリング
処理調整設定を変更する