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

2021.08.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

夜間帯だけ起動し、日中は停止する 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 日(現実の経過時間)

このシナリオでは、バックアップ保持期間を 7 日に設定したにもかかわらず、自動で作成されるスナップショットが現実時間の 56 日間残ります。

自動バックアップの保持期間を 7 日から 1 日へ変更することで、現実の経過時間約 8 日後に世代交代が行われ、7 日でローテーションを期待する動作に近くなります。
なお、保持期間のカウントが必ずしもシナリオ通りに行われるとは限らないので、あくまでも参考程度にしてください。

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

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

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

参考資料

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