定期実行(バッチ)処理で利用する RDS DB インスタンスの自動スナップショットがバックアップ保持期間を超えても残り続けるときの対処方法

2021.08.06

困っていた内容

夜間帯だけ起動し、日中は停止する RDS DB インスタンスを使っています。

自動バックアップ設定を有効(7日)としていますが、自動スナップショットが 7 日以上経過しても残り続けます。

なぜバックアップの保持期間を過ぎてもスナップショットが消えないのでしょうか?

どう対応すればいいの?

RDS DB インスタンスが停止している時間(stopped 状態)は、自動で作成されるスナップショットはバックアップ保持期間の計算に含まれません。このため、現実の経過時間で 7 日経過以降も自動スナップショットが残り続けます。

自動バックアップ保持期間の一例を記載します。

RDS DB インスタンス自動バックアップの保持期間例

シナリオ

  • 01:00 - 04:00: 毎日 3 時間起動(土日祝日も 3 時間起動する想定)

設定

  • 自動バックアップ保持期間: 7 日

バックアップ保持期間

  • 自動バックアップを RDSインスタンス が保持する期間(日)
    • 24 時間(1 日)/ 3 時間(1 日の RDS DB インスタンス起動時間)= 8(日)
    • 8 日 * バックアップ保持期間(7 日)= 56 日(現実の経過時間)

このシナリオではバックアップ保持期間を 1 日に設定することで、現実の経過時間で約 8 日後に保持期間が切れ、世代交代が発生します。
なお、保持期間のカウントが必ずしもシナリオ通りに行われるとは限らないので、あくまでも参考程度にしてください。

運用観点でのワンポイント

RDS DB インスタンスは 2017 年から停止できるようになったので、コスト削減などを理由に定期起動・停止する環境を見かけるようになりました。

一見、「世代交代が正常に動作していないのでは?」と思える挙動をしますが、ドキュメントに記載された正常動作ですので気をつけたいところです。

参考資料

DB インスタンスの停止中は、自動バックアップは作成されません。DB インスタンスが停止している場合、バックアップ保持期間より長くバックアップを保持できます。 RDSには、バックアップ保存期間の計算時にstopped状態にあった時間は含まれません。