AWS Database Migration Service (AWS DMS) タスクでソースレイテンシーが高いことがわかりました。移行中のソースレイテンシーの原因は何ですか?
簡単な説明
Amazon CloudWatch メトリクスを使用して AWS DMS タスクをモニタリングできます。移行中に、AWS DMS タスクの継続的なレプリケーションフェーズ (変更データキャプチャ (CDC)) 中にソースレイテンシーが発生することがあります。CDCLatencySource の CloudWatch サービスメトリクスを使用して、AWS DMS タスクのソースレイテンシーをモニタリングできます。以下の場合、AWS DMS タスクでソースレイテンシーが発生する可能性があります。
- ソースデータベースのリソースが限られている。
- AWS DMS レプリケーションインスタンスのリソースが限られている。
- ソースデータベースと AWS DMS レプリケーションインスタンス間のネットワーク速度が遅い。
- AWS DMS が、継続的なレプリケーション中にソースデータベースのトランザクションログから新しい変更を読み取っている。
- AWS DMS タスク設定が不十分であるか、ラージオブジェクト (LOB) を移行中である。
- AWS DMS タスクに使用される Oracle ソースデータベースが、継続的なレプリケーションに LogMiner を使用している。
解決方法
ソースデータベースのリソースが限られている。ソース DB エンジンにはネイティブモニタリングを使用するのがベストプラクティスです。ネイティブモニタリングを使用すると、データベースでメモリ競合や I/O 飽和などのパフォーマンスのボトルネックが発生していないことを確認できます。
AWS DMS レプリケーションインスタンスのリソースが限られている。CPUUtilization、FreeStorageSpace、FreeableMemory などのレプリケーションインスタンスメトリクスをモニタリングします。レプリケーションインスタンスに、タスクを管理するための十分なリソースがあることを確認します。
ソースデータベースと AWS DMS レプリケーションインスタンス間のネットワーク速度が遅い。設計上、単一の AWS DMS タスクはネットワーク帯域幅全体を使用できません。多数の変更がある、稼働中の本番データベースがある場合は、ネットワーク帯域幅を増やす必要があります。例えば、AWS Direct Connect 接続を使用します。
AWS DMS が、継続的なレプリケーション中にソースデータベースのトランザクションログから新しい変更を読み取っている。ソース DB エンジンによっては、ソーストランザクションログにコミットされていないデータがある場合もあります。進行中のレプリケーション中に、AWS DMS が受信した変更をトランザクションログから読み取っている。ただし、AWS DMS はターゲットにコミットされた変更のみを転送している。最終的に、これによりソースレイテンシーが発生する可能性があります。CDC のレプリケーションタスクメトリクスと SOURCE_CAPTURE コンポーネントの詳細なデバッグログをモニタリングして、タスクが進行していることを確認します。
ただし、ソースデータベースが大きなデータセットを書き込み、実行するコミット数を減らすと、AWS DMS はトランザクションログからの読み取りを続行します。AWS DMS は、トランザクション全体がコミットされるまで、ターゲットに変更を適用しません。これはソースレイテンシーの原因にもなります。ソースレイテンシーが増加するため、ターゲットレイテンシーも増加します。
AWS DMS タスク設定が不十分であるか、ラージオブジェクト (LOB) を移行中である。AWS DMS は、2 つのフェーズで継続的なレプリケーション用に LOB データを移行します。まず、AWS DMS は、LOB がある列を除くすべての列を含むターゲットテーブルで新しい行を作成します。次に、AWS DMS は LOB がある行を更新します。LOB 列があるテーブルを頻繁に更新するソースデータベースがある場合、ソースレイテンシーが発生する可能性があります。詳細については、「ラージバイナリオブジェクト (LOB) の移行」を参照してください。
タスクのテーブルが多すぎる場合や、複数のテーブルに LOB 列が含まれている場合は、タスクを複数のタスクに分割します。一般的なトランザクションに関与しないテーブルセットがある場合は、移行を複数のタスクに分割します。これにより、パフォーマンスが向上します。トランザクションの一貫性はタスク内で維持されるため、別々のタスクのテーブルが共通のトランザクションに関与しないことが重要です。また、各タスクは独立してトランザクションストリームを読み取るため、ソースデータベースに負荷をかけ過ぎないでください。詳細については、「AWS データベース移行サービスのベストプラクティス」を参照してください。
AWS DMS タスクに使用される Oracle ソースデータベースが、継続的なレプリケーションに LogMiner を使用している。ソースデータベースが大量の REDO ログを生成する場合、継続的なレプリケーションにはバイナリリーダー方式を使用します。ソースデータベースが Oracle Automatic Storage Management (ASM) を使用している場合も、この方法を使用できます。詳細については、「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください。
関連情報
AWS DMS 移行のパフォーマンスの向上