AWS Database Migration Service (AWS DMS) を使用して、データをソースエンジンからターゲットエンジンに移行しようとすると、タスクがエラーなしで失敗します。
簡単な説明
AWS DMS タスクが失敗すると、タスクログにエントリが作成されます。タスクログには、エラーメッセージ (] E:) または警告メッセージ (] W:) のいずれかの失敗の原因に関する情報が記録されます。場合によっては、AWS DMS タスクがエラーや警告なしで失敗し、トラブルシューティングが困難になることがあります。
ほとんどの場合、AWS DMS タスクが失敗する理由は次のいずれかです。
レプリケーションインスタンスでのリソース競合
CPU とメモリは、移行タスクに必要な 2 つの最も重要なリソースです。
- CPU は、ソースデータ型を AWS DMS のデータ型に変換してからターゲットのデータ型に変換する必要があります。
- AWS DMS はソースとターゲットへのストリームを作成するため、メモリが必要です。AWS DMS は、レプリケーションインスタンスのメモリ内のストリームバッファに情報を保存します。
また、内部監視システムは CPU とメモリを使用してレプリケーションインスタンスをモニタリングします。CPU またはメモリのいずれかで競合が発生すると、移行タスクが通知なしに失敗することがあります。
レプリケーションインスタンスのストレージがいっぱいになっている
レプリケーションインスタンスのストレージがいっぱいになると、移行タスクはエラーなしで失敗することがあります。
内部エラーが発生した
AWS DMS タスクは、内部エラーがあると通知なしで失敗することがあります。内部エラーは、デフォルトで記録されるタスクログには表示されません。
解決策
**注:**タスクが非リレーショナルデータベース管理システムを使用している場合は、並列設定なしでタスクを実行することをお勧めします。詳しくは、「ターゲットメタデータのタスク設定」を参照してください。
詳細について、DMS、ソース、およびターゲットのログを確認します。まず、タスクが通知なしで失敗した後のタスクログの最後のエントリの時刻をチェックします。次に、失敗が記録されたのと同時に、レプリケーションインスタンスの CPU、メモリ、ディスクの使用率を確認します。
FreeableMemoryが低くて SwapUsage が高い場合は、レプリケーションインスタンスでメモリの競合が発生している可能性があります。詳細については、「AWS Data Migration Service のメトリクス」を参照してください。
CloudWatch メトリクスを表示するには、次の手順を実行します。
- AWS DMS コンソールを開きます。
- ナビゲーションペインで、[データベース移行タスク] を選択します。
- 失敗したタスクの名前を選択します。
- [概要の詳細] セクションで、レプリケーションインスタンスの名前をメモします。
- ナビゲーションペインで [レプリケーションインスタンス] を選択します。
- メモしたレプリケーションインスタンスの名前を選択します。
- **[移行タスクのメトリクス]**セクションで、CPUUtilization、SwapUsage、FreeableMemory、FreeStorageSpace の各メトリクスを確認します。
- 詳細を表示するには、指標にカーソルを合わせ、その他のオプションアイコンを選択します。
- [メトリクスで表示] を選択します。これにより、CloudWatch コンソールが開きます。
CloudWatch コンソールで、タスクが失敗したときのメトリクスの使用率を表示します。
CPU またはメモリの競合が頻繁に発生する場合は、レプリケーションインスタンスで実行されているタスクの数を減らしてください。そのためには、新しいレプリケーションインスタンスを起動し、タスクを複数のレプリケーションインスタンスに分散します。または、レプリケーションインスタンスをより大きなインスタンスタイプにスケールアップします。
**注:**T2 インスタンスは、CPU クレジットを使い切った後もベースラインのパフォーマンスを発揮します。例えば、T2.micro インスタンスでは 10% のベースラインパフォーマンスが提供されます。CPU 使用率を確認する際は、インスタンスタイプを考慮してください。詳細については、「バーストパフォーマンスインスタンスに関する主要な概念と定義」を参照してください。
通知なしの失敗の原因を特定したら、タスクを再開します。CPU、メモリ、またはディスクスペースに競合がない場合は、内部エラーが原因でタスクが失敗した可能性があります。内部エラーをトラブルシューティングするには、詳細なデバッグを有効にしてください。ここでは、エラーの前に発生したログを確認し、関連するログの詳細なデバッグを有効にします。例えば、最後のログが TARGET\ _APPLY からのものである場合は、SORTER, TARGET\ _APPLY の詳細なデバッグを有効にしてください。その後、タスクを再開し、タスクログを確認して失敗した理由を特定します。
**注:**この問題は、データではなく検証の問題が原因である可能性があります。検証コンポーネントが問題の原因であるかどうかをテストするには、検証専用タスクを実行して問題が発生するかどうかを確認します。
関連情報
AWS Database Migration Service での移行タスクのトラブルシューティング
AWS のテクニカルサポートを受けるにはどうすればよいですか?
AWS DMS レプリケーション DB インスタンスがストレージ不足の状態なのはなぜですか?