まとめ
- Auroraは単体で自動バックアップ機能がある
- ただ、その自動バックアップの取得に失敗した場合に通知する方法はない
- AWS Backupを用いることでバックアップジョブの結果をもって通知することが可能
Auroraの自動バックアップについて
Auroraは単体で自動バックアップ機能があります。基本はこれを使うだけでOKです
バックアップの要件がある場合
商用運用となると、運用要件が存在します。今回のサービスではDR(Disaster Recovery)要件として以下が存在しています
- 毎日バックアップを取得している
- バックアップ取得が失敗した場合は、通知とチケット作成を行い、バックアップの手動取得と失敗の原因調査・再発防止を行う
この場合、Aurora自動バックアップは1日に1回取得されるため問題ありませんが、バックアップが取得した場合の検知が必要になります
自動バックアップの取得に失敗した場合に通知する方法はない
RDS・Auroraにはデータベースの状態に応じてイベントが発行されます。このイベントをEventBridgeに流すことで、通知ができるのではと考えていました
実際に、クラスタースナップショットに対してのイベントもあります
一方でイベントの種類は自動バックアップの作成中(RDS-EVENT-0168)と完了(RDS-EVENT-0169)だけで、失敗がありません
なので、失敗した場合の通知を行う場合以下のような手段をとる必要があります
- RDS-EVENT-0168のイベントをもとにスクリプトを走らせて、スナップショットが作成完了するまでポーリングする
- バックアップウィンドウの時間が過ぎた後、イベント一覧を確認しRDS-EVENT-0169が発生の有無を確認する
- 自動バックアップではなく手動でスナップショットを取得する
1・2個目の方法はできなくはなさそうですが、可能ならばこちらから拾う形ではなく、サービスからトリガーされる形で検知がしたいです
3個目の方法は手動スナップショットはフルバックアップとなるため、自動バックアップと比較してコストがかかります
DB クラスタースナップショットは常にフルバックアップで、作成時にクラスターボリュームのサイズをキャプチャします。スナップショットを手動で取得するか、AWS バックアッププランを通じて取得するかにかかわらず、Aurora は手動スナップショットとして扱います。
AWS BackupでAurora自動バックアップを取る場合
AWS Backupでは、Amazon Auroraの継続的なバックアップという形で自動バックアップの管理を行うことができます
仕組みは以下になります
- AWS Backupのバックアッププランで指定した時間帯にバックアップJOBが走る
- バックアップJOBが成功すると継続的バックアップ(=PITRに使用されるバックアップ)が作成される
- 日次の自動バックアップ自体はAWS Backupによって決定されたバックアップウィンドウの時間に取得される
より詳しい内部動作は以下の記事をご確認ください。
AWS Backup を用いると、バックアップJOBという形でバックアップ処理が実行されるため、このJOBの結果を使用することでバックアップ失敗の検知ができます
バックアップ失敗の通知方法については以下の公式ドキュメントや記事を参考にSNSと連携して行うのがよいでしょう