RDS の自動スナップショットがバックアップウィンドウ時間外に作成されている原因について

2020.08.21

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

困っていた内容

開発環境のデータベースで使用しない時間帯は停止している DB インスタンスがあります。バックアップウィンドウの時間を指定していますが、自動スナップショットがバックアップウィンドウ以外の時間帯に作成されています。なぜですか?

RDS の自動スナップショットについて

RDS の自動バックアップは、DB インスタンスが起動中の場合のみ取得されると AWS ドキュメントに記載があります。

自動バックアップを行うには、DB インスタンスが AVAILABLE 状態になっている必要があります。 DB インスタンスが STORAGE_FULLなどの AVAILABLE 以外の状態にある間は、自動バックアップは行われません。

引用: バックアップの使用

実際に確認してみた

検証用に新規で DB インスタンスを起動し、バックアップウィンドウ以外の時間帯に自動スナップショットが作成されることがあるのか確認してみました。

今回は MySQL バージョン 8.0.17 を使用しました。

バックアップウィンドウの時間帯は、21:00 - 21:30 UTC (2pm - 2:30pm ローカル時間) に設定します。

検証開始

まずは、DB インスタンスを新規作成しました。DB インスタンス新規作成時に自動スナップショットが作成されました。

次に、DB インスタンスにデータを追加し様子をみました。同日のバックアップウィンドウの時間帯に自動スナップショットが作成されていることを確認しました。

そのまま2日間起動中のまま放置しました。すると予想通り、バックアップウィンドウの時間帯に自動スナップショットが作成されていました。

DB インスタンスを停止してみる

DB インスタンスを停止し、スナップショットが作成されるか確認しました。以下の画像のように、停止前にスナップショットの作成をするか選択します。 今回は「はい」を選択し、スナップショット名を入れて停止をしました。

停止処理が開始したタイミングで、手動スナップショットの作成が開始されました。

この時、自動スナップショットは作成されませんでした。 そのまま翌日まで停止としました。

翌日、DB インスタンスを起動し、今回は「いいえ」を選択し、停止しました。 停止処理が開始したタイミングで、自動スナップショットが作成されました。

DB インスタンスを再起動してみる

DB インスタンスを起動し、再起動することでスナップショットが作成されるか確認しました。

まずは、バックアップウィンドウ時間帯前に起動し、再起動を実施したところ、自動スナップショットは作成されませんでした。その後、停止(手動スナップショット作成するかに対し「いいえ」を選択)してみましたが、今回は自動スナップショットは作成されませんでした。

翌日、バックアップウィンドウ時間帯後に起動し、再起動を実施したところ、自動スナップショットが作成されました。その後、停止(手動スナップショット作成するかに対し「いいえ」を選択)しました。このタイミングでは自動スナップショットは作成されませんでした。

結果

今回の検証で自動スナップショットが作成されたタイミングは以下のようになりました。

スナップショットが作成されたタイミング 自動スナップショット
バックアップウインドウの時間帯(起動状態)
DB 停止を開始したタイミング(スナップショットを作成する - はい)  
DB 停止を開始したタイミング(スナップショットを作成する - いいえ)
バックアップウィンドウ時間帯前に起動し、再起動を実施  
バックアップウィンドウ時間帯後に起動し、再起動を実施

まとめ

他にも自動バックアップが作成される条件はあるかもしれませんが、今回は上記のタイミングで検証しました。バックアップウィンドウ以外の時間帯に自動スナップショットが作成されることがあることが分かりました。

参照情報

バックアップの使用