WordPress on AWSのバックアップはEBSスナップショットが良い

AWSのEC2上にWordPressを構築する場合、ストレージはEBSとなる。
バックアップはこのEBSのスナップショットで良いということに気が付いた。

DBのバックアップもメディアファイルのバックアップも、バックアップスクリプトをCronで動かしたりする必要はない。楽ちんだ。

以下EBSスナップショットを使うときに抱いた疑問点と調べたこと。

EBSボリュームが壊れたらスナップショットはどうなる?

EBSスナップショットはS3(ユーザーが触れない領域)に保存されるので、何らかの理由でEBS上のデータが壊滅した場合でも影響を受けない。

EBS上にスナップショットがあるわけではないので大丈夫。

逆にハードウェア障害などでEBSボリュームが壊れた際にAWSから提示される復元手段はスナップショットのみということなので、スナップショットは必ず取っておいた方がいい。

リストアは?

EC2から既存のEBSボリュームをデタッチして、スナップショットのEBSボリュームをアタッチ。
ポチポチやれば付け替えられてすぐにリストアできる。

なおリストア直後はEBSボリューム上には完全なデータがなくて、徐々にウォームアップする。まだ取り込んでないファイルにアクセスがあった場合はS3からそのデータを持ってくるので、エラーを起こすことはないが、リストアしてすぐはI/O遅延の可能性がある模様。

高速スナップショット復元とは?

高速スナップショット復元を有効にしておくとEBSボリュームに完全なデータが入った状態でリストアでき、上記のI/O遅延を防止できる。
ただし高速スナップショットを常時有効にしておくのはとてもお高い。

WordPressならまあ不要かな?
I/O遅延が刺さる危険性のあるシステムの場合はリストアする時だけ高速スナップショットを有効にするという手がある。ただし設定で有効にしてからウォームアップするまで1時間ほどかかるとのことなのでそのあたり注意が必要。

定期的なスナップショットや世代管理は

ライフサイクルマネージャーでスナップショットライフサイクルを管理できる。
2018年からできた機能でそれ以前はちょっと面倒だったみたいだ。

ライフサイクルのインターバルには12時間、24時間など一定のサイクルを指定でき、世代は期間か数で設定が可能。

費用は?

Amazon EBSの価格を見ると東京リージョンで

1 か月に格納されたデータ 1 GB あたり 0.05USD

とのこと。リーズナブルかと。
複数のスナップショットを取っても差分になるのでそんなには増えない。

あとこれも大したことはないがS3の使用料金がかかる。

スナップショットは差分とのことだがそれじゃ全部取っておかないといけないのでは?

なんか大丈夫らしい。ひとつだけしかなくても復元できる。AWSが裏で必要な情報を保持してくれているとのこと。