RDS for Oracleのバックアップ戦略

エキサイト株式会社のみーです。

RDSインスタンスのバックアップを実施するには、RDSの標準機能を使う方法だけでなく、AWS Backupを使う方法も用意されています。
要件に合わせて適切な選択をしていきましょう。

なお、以下の内容はRDS for Oracleを前提としていますのでご注意ください。

AWS Backupを使う

AWS Backupはバックアップボールトとバックアッププランという2つの概念を押さえておく必要があります。

バックアップボールト

バックアップボールトはバックアップをまとめる論理的なコンテナです。

特徴の1つとして、ボールト毎にアクセスポリシーを設定することができます。
バックアップの削除を禁止したり、特定ユーザしかアクセスできないようにしたり、セキュリティ的に保護する必要性がある場合には非常に有用な機能ですね。

バックアッププラン

RDSの標準機能ではスナップショットの取得は24時間毎になりますが、AWS Backupを使うことでより柔軟な設定が可能になります。
取得間隔を12時間毎にしたり、もちろんcron式で設定することもできます。

先日、RDSインスタンスの継続的バックアップもサポートされたことで、AWS Backupだけでバックアップを集中管理できるようになりました、素敵。

aws.amazon.com

クロスリージョンコピーができない?

RDSインスタンスに個別にオプショングループを設定している方も多いと思いますが、その場合にはAWS Backupを使ったクロスリージョンコピーができないこともあります。

そもそも、RDSのオプショングループはリージョン毎に作成していくものです。
なので、クロスリージョンコピーする場合は、コピー元のオプショングループと同じ設定のオプショングループをコピー先に用意しておく必要があるわけです。

Option groups are specific to the AWS Region that they are created in, and you can't use an option group from one AWS Region in another AWS Region. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html

そしてコピーするときには、OptionGroupNameに用意したオプショングループを設定することになるのですが、

Specify this option if you are copying a snapshot from one AWS Region to another, and your DB instance uses a nondefault option group. https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBSnapshot.html

残念ながら、AWS Backupではコピー先のオプショングループを設定する項目がないようです。

You cannot specify RDS options when using AWS Backup to make a backup copy. https://docs.aws.amazon.com/aws-backup/latest/devguide/troubleshooting.html

RDSインスタンスにデフォルトのオプショングループを設定している場合は問題ありません。
そうでない場合は、今のところはAWS Backupでの管理は諦めるしかないのです。いつかサポートされることを願って。

AWS Backupでバックアップを管理したい、ということであれば、スナップショットの取得をAWS Backupで、クロスリージョンコピーはLambdaで、というように分けてしまうのもありだとは思います。

RDSの標準機能を使う

AWS Backupのようにスナップショットの取得間隔を変更したりはできませんが、そういった要件がなければこちらで十分かもしれません。

クロスリージョン自動バックアップ

2020年12月4日、re:invent 2020でクロスリージョン自動バックアップ発表され、本格的なDR構想へ向けて勢いが増し、
2021年3月2日、大阪リージョンがフルリージョンに昇格したことでさらにその勢いが増していき、
2021年5月2日、唯一の課題だった暗号化されたインスタンスのクロスリージョンコピーもサポートされました。

aws.amazon.com

そんなこんなで、大阪リージョンでのDRを手軽に実現できるようになりました。
大阪リージョン、いかがですか?使ってみたくなりましたか?

なお、継続的バックアップを有効にしている場合、東京リージョンと大阪リージョンのLatest restorable timeの差は最大でも15分程度でした。良い感じ。

設定について

マネコンから設定してみます。2021年5月現在、CFnではまだ設定できないようです。

コピー先リージョンでのスナップショット保持期間ですが、こちらは後から変更できないようなので注意が必要です。

また、RDSインスタンスを暗号化している場合、マスターキーを指定する必要があります。
キーのARNを入力するようになっていますが、エイリアスで指定しても問題ないようです。AWSマネージドのデフォルトキーを使っていれば、alias/aws/rdsでOK。

f:id:ex-mii:20210511125133p:plain

オプショングループについて

AWS Backupで問題になっていたオプショングループですが、特に何も設定せずとも、コピー元のオプショングループをベースにRDS側で自動生成してくれます。
これは非常に助かりますね。今まではいちいち用意する必要があったので、その手間を省けるようになったわけです。

画像の一番下の項目が自動生成されたオプショングループです。Option group for automated backup arn:aws:rds:ap-northeast-1...とあります。素晴らしい。

f:id:ex-mii:20210511125155p:plain

まとめ

セキュリティの要件が厳しい場合はAWS BackupとLambdaを組み合わせる、
手軽にDRを実現したい場合はRDSの標準機能を使う、
というような使い分けがベターなのかなと思います。

クロスリージョン自動バックアップの暗号化サポートに気付かず、自前でLambdaを書いていたのは内緒です。
クラウドサービスは常に進化し続けているのだ、ということを忘れず、日々の情報収集を欠かさないようにしていきたいですね。