停止し、再試行しない AWS Database Migration Service (AWS DMS) タスクがあります。AWS DMS タスクのオペレーションを再開するにはどうすればよいですか?
解決方法
AWS DMS は、自己修復動作を行うように設計されたマネージドサービスです。これは、問題が発生すると、ユーザー側でのアクションの実行を必要とすることなく、AWS DMS が問題の修正を試み、オペレーションを再開することを意味します。しかし、移行が停止して再試行されない場合があります。
まず、AWS DMS の使用時に発生する可能性のある 2 種類のエラーを理解することが重要です。
致命的なエラー
AWS DMS で移行を続行できなくするエラーが発生した場合、タスクは停止し、FAILED 状態になります。これは致命的なエラーと呼ばれます。次に例を示します。
- ソースエンドポイントが設定されていません。これは移行の前提条件です。
- AWS DMS レプリケーションインスタンスが、ソースデータベースからソースオブジェクトを取得しません。
タスクログには、次のようなメッセージが表示されます。
「2022-05-28T16:07:35 [TASK_MANAGER ]E: Task 'K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA' encountered a fatal error」 (2022-05-28T16:07:35 [TASK_MANAGER ]E: タスク「K7YJOFK7GYXIK44C2KLGFNG7ZONLZGPWPD5RWHA」で致命的なエラーが発生しました)
AWS DMS で致命的なエラーが発生すると、再起動が 6 回試行されます。タスクが再試行されなくなった場合は、これらの試行が既に完了している可能性があります。
回復可能なエラー
AWS DMS は、あらゆる環境エラーを回復可能なエラーとみなします。そのため、タスクまたはレプリケーションインスタンスで環境エラーが発生した場合、タスクは中断しますが、自動的に回復してから再試行します。
回復可能なエラーの例は次のとおりです。
- ソース/ターゲットデータベースへの AWS DMS レプリケーションインスタンス接続が中断された。
- メンテナンスのため、レプリケーションインスタンスが再起動された。
タスクログには、次のようなメッセージが表示されます。
「Last Error Task error notification received from subtask 0, thread 0 [reptask/replicationtask.c:2673] [1022502] Stop Reason RECOVERABLE_ERROR Error Level RECOVERABLE」(サブタスク 0、スレッド 0 から受信した「最後のエラー」のエラー通知 [reptask/replicationtask.c:2673] [1022502] 停止の理由 RECOVERABLE_ERROR エラーレベル 回復可能)
デフォルトでは、回復可能なエラーのあるタスクは、無期限に再試行します。RecoverableErrorCount 設定は、この動作を制御します。このパラメータは、環境エラーが発生した場合に AWS DMS が試行するタスク再開の最大数を設定します。指定された回数にわたってシステムがタスクの再起動を試行した後、タスクは停止し、手動による介入が必要になります。デフォルト値は -1 です。これは、タスクを無期限に再開するよう AWS DMS に指示します。
回復可能なエラーによってタスクが停止し、再試行されなくなった場合は、次のことを確認します。
- RecoverableErrorCount パラメータがカスタム値に設定されていないか。
- レプリケーションインスタンス自体がダウンしていないか。
他のデフォルト以外の値の設定が再試行を妨げていないかどうかを確認する
これらの設定をデフォルト以外の値に設定すると、AWS DMS タスクによる再試行が妨げられる可能性があります。
"ErrorBehavior": {
"FailOnNoTablesCaptured": false,
"ApplyErrorUpdatePolicy": "LOG_ERROR", --- can be set to STOP_TASK
"FailOnTransactionConsistencyBreached": false,
"RecoverableErrorThrottlingMax": 1800,
"DataErrorEscalationPolicy": "SUSPEND_TABLE", --- can be set to STOP_TASK
"ApplyErrorEscalationCount": 0,
"RecoverableErrorStopRetryAfterThrottlingMax": false,
"RecoverableErrorThrottling": true,
"ApplyErrorFailOnTruncationDdl": false,
"DataTruncationErrorPolicy": "LOG_ERROR", --- can be set to STOP_TASK
"ApplyErrorInsertPolicy": "LOG_ERROR", --- can be set to STOP_TASK
"EventErrorPolicy": "IGNORE",
"ApplyErrorEscalationPolicy": "LOG_ERROR", --- can be set to STOP_TASK
"RecoverableErrorCount": -1,
"DataErrorEscalationCount": 0,
"TableErrorEscalationPolicy": "STOP_TASK",
"RecoverableErrorInterval": 5,
"ApplyErrorDeletePolicy": "IGNORE_RECORD", --- can be set to STOP_TASK
"TableErrorEscalationCount": 0,
"FullLoadIgnoreConflicts": true,
"DataErrorPolicy": "LOG_ERROR",
"TableErrorPolicy": "SUSPEND_TABLE"
},
関連情報
Error handling task settings (エラー処理タスク設定)
Troubleshooting migration tasks in AWS Database Migration Service (AWS Database Migration Service での移行タスクのトラブルシューティング)