AWS Backup で RDS をバックアップ/リストアする

AWS Backup と RDS の標準バックアップって、どんな感じで管理できるん? というご質問をきっかけに検証してみました。
2019.02.10

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

前回は、AWS Backup を使って EFS のお手軽なバックアップをご紹介しました。

AWS Backup でお手軽に EFS バックアップを取得する

今回は「AWS Backup で RDS のバックアップを取得したときって、どういう管理になんの?」って疑問を解消するために試してみました。

毎度お伝えしていますが、AWS Backup は、まだ東京リージョンで使えませんので、ご注意を。来る日のために予習ということで読んでいただければと思います。

やってみた

AWS Backup がサポートする RDS

執筆時点の AWS Backup の公式ガイドでは、下記のとおり記載されています。

AWS Backup currently supports all Amazon RDS database engines except Amazon Aurora MySQL.

Aurora MySQL 以外のすべての RDS でサポートされています。

Aurora については、"MySQL" と明示されているので、「ふーん、じゃぁ Aurora PostgreSQL は使えるんやな。」と思って試してみましたが、バックアップ対象のリソースとして Aurora PostgreSQL インスタンスは表示されなかったので、Aurora についてはいずれも対象外のようです。

検証環境

  • オレゴンリージョン(us-west-2)
  • RDS
  • MySQL 5.7.23
  • db.t2.micro
  • マルチAZ なし
  • 暗号化 なし

AWS Backup の取得

実際の運用ではバックアッププランを作成し、スケジュール実行することになるかと思いますが、今回は検証ということで on-demand backup で実施します。バックアッププランの使用される場合は、以下の記事を参考にしてください。

【新サービス】 AWSの各種サービスのバックアップを管理するAWS Backupが登場!

AWS Backup の管理メニューから、protected resources を開き Create on-demand backup をクリックします。以下のように設定し、Create on-demand backup をクリックし、即時にバックアップを取得します。

項目 設定値 備考
Resource RDS/testdb リソースタイプ、対象の ID, Database name 等を指定
Backup window Create backup now Customize backup window の場合、1〜12時間以内の指定が可能
Transition to cold storage N/A 執筆時点でコールドストレージへの移行は EFS のみサポート
Expire Never その他に x日後,x週間後,xヶ月後,x年後の指定が可能
Backup vault Default Backup vault で、アクセス制限、暗号化キーなどを個別に分けて管理することも可能
IAM role Default role AWSBackupDefaultServiceRole が作成されます
Tags N/A

しばらくするとバックアップが完了し、ステータスが Completed であること確認しましす。

バックアップ一覧

AWS Backup でバックアップの一覧を確認してみると、以下のように AWS Backup だけではなく、RDS で取得された手動バックアップおよび、自動バックアップも表示されており、統合的に管理できていることがわかります。

では、RDS 側ではどうでしょう。RDS 側でも AWS Backup で取得されたバックアップが表示されています。

次に AWS Backup によるリストア画面を確認してみましょう。

リストア画面

AWS Backup の画面から、リストア対象を選択し Restore をクリックします。AWS Backup のメニューからでも、RDSの手動および自動バックアップを選択してリストアすることは可能です。逆に、RDS のメニューから AWS Backup を選択してリストアすることも可能です。

ただし、特定時点への復元 は AWS Backup には表示されていないので、RDS のメニューから実施する必要がありそうです。

AWS Backup のリストア画面は、まだ日本語対応していないものの、RDS のリスト画面とほぼ同じです。なので、差異があった部分のみをピックアップします。

パラメータグループ

AWS Backup のリストアでは、パラメータグループの指定が出来ませんでした。リストア後に default パラメータグループに戻ってしまうので、別途、変更が必要になります。

暗号化

RDS のリストア画面では暗号化の設定変更はグレーアウトされていますが、AWS Backup では選択可能でした。

「非暗号化のバックアップから、リストア時に暗号化できるのかな?」と思い、暗号化サポートの db.t2.small を選択し、Enable encryption と default キーを指定しましたが、暗号化は無効状態でリストアされました。

別のパターンとして、default キーで暗号化済みのバックアップから、「暗号化無効を指定」および、「暗号化キーの変更」の2パターンも試してみましたが、いずれも元の状態でリストアされました。執筆時点では、暗号化メニューは実施的に機能していないように見えました。RDS のリストア時にそもそも暗号化の設定変更ができないので、問題ないとは思いますが。。

さいごに、AWS Backup 側ではリストア用のロール指定があります。

パラメータグループの指定ができないので、個人的にはリストアは RDS メニューからで良いかな、と思いました。(いずれ AWS Backup 側も対応してくれるはず!)

さいごに

結果としては、「まぁ、そうだろうよ」という感じですねw

これまで RDS 手動バックアップのスケジューリングやライフサイクルを管理するには、Cloudwatch Events + Lambda など、別途の作り込みが必要でしたが、AWS Backup の利用で随分と楽に実装できそうです。標準機能によるバックアップと統合的に管理できることもわかったので、手動バックアップが必要なケースでは、積極的に使っていきたいですね!

あとは東京リージョンに来るのを待つだけです(2回目w)

以上!大阪オフィスの丸毛(@marumo1981)でした!