Techfirm Cloud Architect Blog

テックファーム株式会社クラウドインフラグループのブログ

DMSレプリケーションインスタンスにおけるストレージ不足の対応方法

はじめに

AWS DMSの学習中にDMSレプリケーションインスタンスがストレージ不足になりました。
その際に調査した対応方法を以下にまとめます。

背景

学習のためにAWS DMSを動かしていたところ、以下のようなエラーが発生し、レプリケーションインスタンスには「storage-full」と表示されました。 レプリケーションタスクエラー

レプリケーションインスタンスストレージ不足

起動したDMSタスクのログを確認したところ、ログ確認用に設定していたデバッグログ設定が原因でレプリケーションインスタンスのストレージを圧迫しているようです。 デバッグログ設定

私の環境では、レプリケーションタスク数分の実行でデバッグログが数GB生成されていました。
こちらにも「ログエントリが残りのストレージ領域を消費する可能性があります」と記載があり、デバッグログを出力する場合はストレージ容量に注意が必要なようです。

今回のストレージ不足には、以下の方法で対応可能です。

対応方法

1.デバッグログ出力を止める

今回はデバッグログ出力が必須でなかったため、ストレージ不足の原因であるログレベルを下げます。 デフォルト設定

AWSドキュメントによると、AWS Supportから要求された場合以外はデフォルトを推奨しているようです。

Logging levels other than DEFAULT are rarely needed for these components during troubleshooting. We do not recommend changing the logging level from DEFAULT for these components unless specifically requested by AWS Support.

デバッグログ出力が必要な場合は、以下の方法でストレージを拡張します。

2.ストレージを拡張する

AWSコンソール、またはAPIからレプリケーションインスタンスのストレージを拡張します。

ただし、特記事項としては以下があります。

  • ストレージサイズを増やすと、後から減らすことはできない
  • Amazon RDSのように拡張後、6時間は拡張できないといった制限はない

3.ログを削除する

ストレージを拡張してもログが残ったままのため、ストレージ領域を占有しています。
そこで、以下2つの手順のいずれかでレプリケーションインスタンスからログを削除することもできます。

A.AWSコンソールで消す
  • AWSコンソールのAWS DMSページからログを削除するレプリケーションインスタンスを開く
  • 「ログの管理」タブから削除するログをチェックし、「削除」ボタンを押下する AWSコンソールで消す手順

  • 確認ダイアログが表示されるので、「削除」ボタンを押下する 削除確認ボタン

  • 削除後、空きストレージ領域が増えていることが確認できる 空きストレージグラフ

B.APIで消す
  • 以下を記載したjsonファイル「tasksetting.json」を作成する
{
  "Logging": {
    "DeleteTaskLogs":true
  }
}
  • 以下AWS CLIを実行する

aws dms modify-replication-task --replication-task-arn <replication-task-arn> --replication-task-settings file://tasksetting.json

まとめ

DMSレプリケーションインスタンスがストレージ不足になった際の対応方法をまとめました。
ストレージ不足になることはあまりないかと思いますが、どなたかの参考になれば幸いです。

参考

AWS DMS レプリケーション DB インスタンスがストレージ不足の状態なのはなぜですか?
AWS DMS タスクの詳細なデバッグログ記録を設定する方法を教えてください。
ロギングタスク設定