AWS DMS のソースデータベースとターゲットデータベース間のデータ不一致の問題をトラブルシューティングするにはどうすればよいですか?

所要時間1分
0

AWS Database Migration Service (AWS DMS) タスクが、移行の全ロード完了またはレプリケーション進行中の段階にあります。ただし、ターゲットデータベースの下流のデータは、ソースのデータと一致しません。ソースデータベースとターゲットデータベース間のデータ不一致の問題をトラブルシューティングする方法を教えてください。

簡単な説明

AWS DMS を使用して異種環境でデータを移行すると、データの不一致が発生する理由はいくつかあります。以下はその例です。

  • 適切な LOB 設定を使用していない場合、データは MaxLobSize タスク設定に従って切り捨てられます。そのため、ターゲット LOB 列には、ソースとまったく同じデータが含まれていません。
  • 異種間移行中、AWS DMS はソースデータ型を内部データ型に変換します。次に、AWS DMS は内部データをターゲットデータタイプに変換します。ただし、一部のソースとターゲットのデータタイプは AWS DMS で完全にサポートされていないため、ソースとターゲットの間でデータの不一致が発生する可能性があります。
  • 変更データキャプチャ (CDC) のレプリケーション中にエラーまたは例外が発生すると、ターゲットデータベースで DML トランザクションが失敗する可能性があります。

解決方法

トラブルシューティングの前に初期チェックを実行する

この記事の手順を使用して問題をトラブルシューティングする前に、次の初期チェックを実行してください。

  • フルロード専用タスクを使用している場合は、移行が完了し、タスクが停止状態になっていることを確認します。
  • フルロードまたは CDC のみのタスクを使用している場合は、CDCLatencySource および CDCLatencyTarget の Amazon CloudWatch メトリクスを確認します。レイテンシーが発生していないことを確認します。
  • ソースデータベースまたはターゲットデータベースに接続されている他のアプリケーションがないことを確認します。これにより、データ操作が発生する可能性があります。例えば、全ロードのみのタスクを実行していて、ソースのデータが他のアプリケーションによって変更されている場合、ターゲットでデータの不一致が発生する可能性があります。また、ターゲットデータベースに DMLトリガがある場合や、別のアプリケーションが移行したターゲット表にデータを書き込む場合も、ターゲットとソース間でデータの不一致が発生します。

ターゲットで awsdms_validation_failures_v1 テーブルをクエリする

データ整合性が主な目的である場合は、AWS DMS タスクを作成するときに必ず検証をオンにしてください。

検証が有効になっている場合のトラブルシューティング

検証がオンになっている場合は、ターゲットデータベースの awsdms_Validation_failures_v1 テーブルを確認できます。移行中にレコードが ValidationSuspended または ValidationFailed 状態になると、AWS DMS は診断情報を awsdms_validation_failures_V1 に書き込みます。次のようなコマンドを実行して、検証エラーのトラブルシューティングを行うには、このテーブルをクエリします。

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

出力の [詳細] 列を確認して、失敗に関する情報を取得します。キー列を使用して、ソースとターゲット間でレコードデータを比較します。詳細については、AWS DMS のデータ検証ドキュメントの「トラブルシューティング」セクションを参照してください。

検証がオフになっている場合のトラブルシューティング

AWS DMS タスクで検証を有効にしていない場合は、検証専用タスクを作成します。

  • 1 回限りの移行では、フルロードの検証専用機能を使用して、ソースとターゲットの間のすべての行をすばやく比較します。
  • 継続的なレプリケーションには、CDC 検証専用タスクを使用します。CDC 検証専用タスクは、ソーステーブルとターゲットテーブルの間の既存の行を検証します。タスクは、表示されているとおりに進行中の変更を継続し、データ検証の失敗を報告します。

ソースデータとターゲットデータの制限を確認する

一致しないデータを特定したら、ソースとターゲットのデータ型に関連する制限を確認します。た例えば、PostgreSQL をソースとして使用する場合、ENUM データ型を移行することはできません。

タスクログにエラーがないか確認する

検証が失敗した時点で、タスクログにエラーがないか確認します。または、コントロールテーブルをチェックして、データ複製の段階で例外がログに記録されていないか確認します。

切り捨てによって生じた不一致のデータを解決する

Limited LOB モードを使用すると、AWS DMS はレプリケーションインスタンスにメモリを事前に割り当てます。次に、LobMaxSize タスク設定を使用して LOB データを一括でロードします。AWS DMS は、最大 LOB サイズを超える LOB を切り捨て、ログファイルに警告を発行します。

データが切り捨てられたことを示す警告メッセージをログファイルで確認し、対応する LOB 列の最大長を確認します。データが切り捨てられないように、LOB 列の長さよりも大きい LobMaxSize を定義します。診断サポートスクリプトを使用して、どのテーブルに LOB データがあるかを調べ、それに応じてクエリを実行します。

LOB 列の最大サイズが 100 MB を超える場合は、フル LOB モードまたはインライン LOB モードを使用して、LOB 列データの切り捨てを停止します。


関連情報

検証専用タスク

AWS公式
AWS公式更新しました 2年前
コメントはありません