AWS DMS レプリケーション DB インスタンスがストレージ不足のステータスなのはなぜですか?
最終更新日: 2021 年 2 月 16 日
AWS Database Migration Service (AWS DMS) のレプリケーション DB インスタンスがストレージ不足のステータスなのはなぜですか?
簡単な説明
AWS DMS レプリケーション DB インスタンスにはストレージがあり、この割り当てストレージはレプリケーション DB インスタンスを作成する際に指定できます。デフォルトでは、dms.t2.* と dms.r4.* レプリケーション DB インスタンスタイプのボリュームサイズは 50 GiB です。dms.c4.* レプリケーション DB インスタンスタイプのボリュームサイズは 100 GiB です。レプリケーション DB インスタンスのストレージの空き容量をモニタリングするには、FreeStorageSpace の Amazon CloudWatch メトリクスをモニタリングします。
レプリケーション DB インスタンスストレージは、主に、継続的なレプリケーションのために収集されるタスクログやキャッシュされた変更に使用されます。
全ロードのみの移行
タスクログが多い場合、例えばタスクの詳細なデバッグログ記録を有効にしている場合などに、タスクログによってストレージ不足の問題が生じることがあります。デフォルトでは AWS DMS タスクのログ記録レベルは最小限ですが、移行のエラーや失敗の原因を特定する際により詳細なログ記録が必要になることがあります。詳細なデバッグログ記録は、AWS DMS がありとあらゆるイベントをログファイルに書き込むことになるため、レプリケーションストレージを消費します。また、タスクログが多すぎると、レプリケーション DB インスタンスがストレージ不足の状態になります。
継続的なレプリケーションがある移行
キャッシュされたイベントは、全ロードのフェーズ中にストレージの問題を引き起こすおそれがあります。移行で StopTaskCachedChangesNotApplied タスク設定を使用するように設定している場合は特に当てはまります。詳細については、「レプリケーションインスタンスの作成」を参照してください。ストレージサイズが小さすぎてキャッシュされた変更を保存できない場合、レプリケーション DB インスタンスはストレージ不足の状態になります。
変更データキャプチャ (CDC) のフェーズ中にスワップされたイベントにより、ソースからキャプチャされた変更をターゲットに適用できない場合、ストレージの問題が発生することがあります。AWS DMS は、キャッシュされたイベントを最初にメモリに保存し、MemoryKeepTime または MemoryLimitTotal パラメータで定義された値 (デフォルトでそれぞれ 60 秒および 1 GiB) を超えると、ストレージにスワップします。スワップされたデータ向けの十分なストレージがない場合、レプリケーション DB インスタンスはストレージ不足の状態になります。詳細については、「変更処理のチューニング設定」を参照してください。
解決方法
注意: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行時にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください。
タスクログの削除 <br>
レプリケーション DB インスタンスが利用可能な状態である場合、タスクログを削除できます。
- AWS DMS コンソールを開きます。
- ナビゲーションペインで [Replication instances (レプリケーションインスタンス)] を選択します。
- レプリケーション DB インスタンスの名前を選択します。
- [Log management (ログの管理)] セクションにすべてのタスクと各タスクの [Log size (ログサイズ)] が表示されます。
- ログを削除したいタスクを選択し、[Delete (削除)] を選択します。
詳細については、「AWS DMS タスクログの表示と管理」を参照してください。
CLI を使用してタスク設定を変更する
タスク設定を変更することで、AWS コマンドラインインターフェイス (AWS CLI) を使用して DMS タスクログを削除することもできます。まず、次のコマンドを使用して tasksetting.json の JSON ファイルを作成します。
"Logging": {
"DeleteTaskLogs": true
}
}
JSON ファイルを作成したら、以下のコマンドを実行してタスク設定を変更します。
注意: タスクのステータスが [停止] または [失敗] になっている場合、変更はできません。
aws dms modify-replication-task --replication-task-arn <dms task="" arn=""> --replication-task-settings file://tasksetting.json</dms>
上記のコマンドはパラメータを "DeleteTaskLogs": true に変えることによりタスク設定を変更します。このパラメータと値をタスク設定に追加すると、そのタスクに存在するすべてのログがレプリケーション DB インスタンスから削除されます。ログが削除された後、タスク設定は "DeleteTaskLogs": true パラメータを削除します。このコマンドを実行した後、レプリケーション DB インスタンスからログが削除され、タスク設定でパラメータ "DeleteTaskLogs": true が削除されていることを確認します。
ログを定期的に削除するには、毎回 "DeleteTaskLogs": true パラメータを使用してタスク設定を変更する必要があります。実装に従って、cronjob または Lambda スケジューラを使用して定期的にこのコマンドを実行するようにスケジュールできます。
詳細については、「modify-replication-task」を参照してください。
レプリケーション DB インスタンスのストレージサイズを増やす
レプリケーション DB インスタンスがストレージ不足の状態である場合、ログを削除することはできません。割り当てられたストレージサイズを増やすか、レプリケーションタスクを削除する必要があります。レプリケーション DB インスタンスのストレージサイズを増やす方法は、以下のとおりです。
- AWS DMS コンソールを開きます。
- ナビゲーションペインで [Replication instances (レプリケーションインスタンス)] を選択します。
- ボリュームサイズを変更したいレプリケーション DB インスタンスの名前を選択します。
- [Modify (変更)] を選択します。
- [Allocated storage (GB) (割り当てられたストレージ (GB))] のフィールドに新しい値を入力します。
- [Apply changes immediately (変更を今すぐ適用)] チェックボックスをオンにして [Modify (変更)] を選択します。
重要: 割り当てられたストレージのサイズを増やすと、後から減らすことはできません。