Aurora MySQL で FreeLocalStorage に余裕があっても CloudWatch Logs エクスポート前にログが削除される原因と対処方法を教えてください

Aurora MySQL で FreeLocalStorage に余裕があっても CloudWatch Logs エクスポート前にログが削除される原因と対処方法を教えてください

2026.02.27

困っている内容

Aurora MySQL を利用しており、スロークエリログや監査ログなどの CloudWatch Logs へのエクスポートを有効化しています。
しかし、ログイベントに下記のエラーメッセージが記録され、CloudWatch Logs へのエクスポート前にログファイルが削除される場合があります。

Due to storage space constraints, the log file <ログファイル名> will be deleted and will not be uploaded to CloudWatch Logs

CloudWatch の FreeLocalStorage メトリクスを確認した所、ストレージ空き容量には十分な余裕がありました。
ストレージ空き容量に余裕があってもログファイルがエクスポート前に削除されてしまう原因と対処方法を教えてください。

回答

原因

該当の事象は、DB インスタンス内のログファイル保存量が、ログ専用ストレージ容量上限の 15% を超過することで発生します。

Aurora MySQL ではほとんどの DB インスタンスクラスにおいて、エラーログ・一般ログ・スロークエリログ・監査ログに専用のストレージを使用します。[1]
このログ専用ストレージは、CloudWatch の FreeLocalStorage メトリクスで監視される一時ストレージ領域とは独立した領域です。

例: db.r8g.xlarge インスタンスの場合

DB インスタンスクラス 使用可能な一時ストレージ/ローカルストレージの最大量 (GiB) ログファイルに使用可能な追加のストレージの最大量 (GiB)
db.r8g.xlarge 80 60

そして Aurora MySQL では、ログファイル保存量がログ専用ストレージ容量上限の 15% に達すると、自動的にログを削除(ローテーション)する仕組みがあります。[2]
log_output パラメータが FILE に設定されている場合、一般ログ・スロークエリログは自動ローテーションの対象外となります。

Aurora MySQL エラーログファイルのサイズは、DB インスタンスのローカルストレージの 15 パーセント以下に制約されます。このしきい値を維持するために、ログは 1 時間ごとに自動的にローテーションされます。Aurora MySQL は 30 日後、またはディスク領域の 15 % が使用されると、ログを削除します。古いログファイルを削除した後、ログファイルの合計サイズがしきい値を超えている場合、ログファイルのサイズがしきい値以下になるまで、最も古いログファイルから順に削除されます。

Aurora MySQL は、24 時間後、またはストレージの 15% が消費されると、監査、一般、および低速クエリログを削除します。

FILE ログ記録が有効になっている場合、一般ログとスロークエリログファイルの検査が 1 時間ごとに実行され、作成後 24 時間を超えた古いログファイルは削除されます。場合によっては、削除後の残りのログファイルの合計サイズが、DB インスタンスのローカル領域のしきい値である 15 % を超えることがあります。この場合、ログファイルのサイズがしきい値以下になるまで、最も古いログファイルから順に削除されます。

そのため、CloudWatch Logs へのエクスポートが完了する前であっても、ストレージ確保のためにログファイルが自動的に削除されることがあります。

対処方法

ログの生成量を抑制し、ローテーションのしきい値(ログ専用ストレージ容量上限の 15%)を超えないように設定することをご検討ください。

  • 対応例
    • 監査ログ[3]
      • server_audit_events パラメータで必要なイベントのみに監査対象を絞り込む
      • server_audit_incl_users, server_audit_excl_users パラメータで対象ユーザを絞り込む
    • スロークエリログ[4]
      • long_query_time の値を調整して出力頻度を下げる

なお、本ブログ執筆時点では、ログ専用ストレージ容量の使用状況を直接確認できる CloudWatch メトリクスは AWS で提供されていません。
そのため、ログ専用ストレージ容量の使用状況を確認するには、AWS CLI や SDK を使用して DescribeDBLogFiles API を定期的に実行し、DB インスタンス内の全ログファイルのサイズを集計し監視する仕組みの実装をご検討ください。[5]

脚注
  1. Aurora MySQL 用の一時ストレージの制限 | Amazon Aurora MySQL のパフォーマンスとスケーリングの管理 ↩︎

  2. Aurora MySQL のログのローテーションと保持 | Aurora MySQL データベースログの概要 ↩︎

  3. アドバンストな監査の有効化 - Amazon Aurora ↩︎

  4. Aurora MySQL のスロークエリと一般ログ - Amazon Aurora ↩︎

  5. DescribeDBLogFiles - Amazon Relational Database Service ↩︎

この記事をシェアする

FacebookHatena blogX

関連記事