AWS Database Migration Service (AWS DMS) レプリケーションタスクを実行したときに表示される "Last Error Replication task out of memory" というエラーを解決したいです。
解決策
エラーの原因を特定する
"Last Error Replication task out of memory" というエラーの原因を特定するには、AWS DMS タスクログを確認してください。
このエラーを解決するには、問題に最も適した解決策を実行してください。
変更を加える前に、タスクを停止する必要があります。変更を加えたら、タスクを再開します。タスクがフルロードフェーズ中に停止した場合、進行中のテーブルは最初から再ロードされます。
タスク設定またはメモリ関連のパラメータを変更する
より多くのメモリ容量を必要とする以下のタスク設定またはメモリ関連のパラメータを変更します。
- ラージバイナリオブジェクト (LOB) 設定
- 検証パラメータ (ThreadCount や PartitionSize など)
- パラレルスレッドパラメータ (ParallelLoadThreads、ParallelLoadBufferSize、ParallelLoadQueuesPerThread、ParallelApplyThreads、ParallelApplyBufferSize、ParallelApplyQueuesPerThread など)
- バッチ適用パラメータ (BatchApplyTimeoutMin、BatchApplyTimeoutMax、BatchApplyMemoryLimit、BatchSplitSize など)
- 他のメモリ関連のタスク設定 (MinTransactionSize、MemoryLimitTotal、MemoryKeepTime、StatementCacheSize など)
前述のタスク設定とパラメータについては、「移行用に AWS DMS のメモリ使用量を最適化する方法を教えてください」を参照してください。
CloudWatch メトリクスに基づいてレプリケーションインスタンスクラスを増やす
レプリケーションインスタンスの FreeMemory メトリクスと SwapUsage Amazon CloudWatch メトリクスを確認します。FreeableMemory が減少するか、SwapUsage が増加または変動する場合は、レプリケーションインスタンスのサイズを増やしてください。
また、継続的な移行や高スループットトランザクションのレプリケーションなど、メモリを大量に消費するワークロードには、メモリ最適化インスタンスを使用できます。
移行するデータのサイズと必要なメモリ量に基づいて 1 つのタスクを複数のタスクに分割する
レプリケーションインスタンスに複数のタスクがある場合は、MemoryUsage メトリクスを使用して、タスクが消費するメモリの量を確認できます。タスクが 変更データのキャプチャ (CDC) フェーズでメモリを保持している理由を確認するには、CDCChangesMemorySource と CDCChangesMemoryTarget を比較します。それぞれのエンドポイントをトラブルシューティングします。
レプリケーションインスタンスで複数のタスクが実行されている場合は、次の 1 つ以上の操作を実行します。
- レプリケーションインスタンスで実行されているタスクの数と種類を減らします。
- 失敗したタスクを別のレプリケーションインスタンスに移動してから再試行します。
- レプリケーションインスタンスのサイズを増やします。
並行して読み込まれるテーブルが複数あるタスクや、多数のテーブルやスキーマを移行するタスクの場合は、次の 1 つ以上の操作を実行します。
- 並行して読み込むテーブルの数を減らします。
- 移行するテーブルとスキーマの総数を減らします。
- 別のレプリケーションインスタンスで別のタスクを使用して、一部のテーブルとスキーマの移行をオフロードします。
- レプリケーションインスタンスのサイズを増やします。
関連情報
Target metadata task settings (ターゲットメタデータのタスク設定)
Change processing tuning settings (処理チューニング設定の変更)
Modifying a replication instance (レプリケーションインスタンスの変更)