話題の記事

AWS データベースサービスの自動バックアップ設定まとめ

2015.08.21

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

データベースといえば、一般的に避けては通れないのがバックアップ運用です。

AWSで提供されているサービスで「データベースサービス」にカテゴライズされるもののうち、RDS、Redshift、ElastiCache(※Redisのみ)については自動バックアップ(自動スナップショット)の機能が提供されています。この機能を使えば基本的にはバックアップ運用をAWSにお任せできるのですが、バックアップサイクル等の設定についてはサービス毎に差異があります。

運用をAWSにお任せできるとはいえ、その仕様を把握しておかないといざリカバリをしようとした際に意図したリカバリポイントまで復元ができない、などという事態が発生する可能性があります。

ということで、今回は各データベースサービスの自動バックアップの設定について、バックアップサイクルバックアップ開始時刻バックアップ保持期間の3つの観点でまとめてみました。

Amazon RDS

項目 デフォルト値 設定可能な値
バックアップサイクル 1回/日 設定変更不可
バックアップ開始時刻 リージョンごとに8時間の時間ブロックからランダムに選択される 「開始時刻」と「期間(0.5〜3時間)」をUTCで指定
バックアップ保持期間 7日 0日〜35日

バックアップサイクル

バックアップサイクルは「1回/日」で固定ですが、RDSでは自動バックアップ(自動スナップショット)に加えて、5分毎にデータベース変更ログのアーカイブが自動で行われます。これにより、ポイントインタイムリカバリが可能となっています。

バックアップ開始時刻

バックアップ開始時間は「開始時刻」と「期間」を指定します。例えば開始時間を「20時00分」、期間を「0.5時間」と指定した場合は、「20時00分〜20時30分」の間にバックアップ処理が開始されます(ピンポイントに何時から開始、という指定はできません。)。指定できる期間は0.5時間〜3時間まで(0.5時間刻み)となっています。

デフォルトのバックアップ開始時刻は、リージョンごとに以下の時間ブロックからランダムに選択されます。

リージョン 時間ブロック
米国東部(バージニア北部リージョン) 03:00-11:00 UTC
米国西部(北カリフォルニア)リージョン 06:00-14:00 UTC
米国西部(オレゴンリージョン) 06:00-14:00 UTC
欧州(アイルランド)リージョン 22:00-06:00 UTC
欧州(フランクフルト)リージョン 23:00-07:00 UTC
アジアパシフィック(東京)リージョン 13:00-21:00 UTC
アジアパシフィック(シドニー)リージョン 12:00-20:00 UTC
アジアパシフィック(シンガポール)リージョン 14:00-22:00 UTC
南米 (サンパウロ) リージョン 00:00-08:00 UTC

バックアップ保持期間

バックアップ保持期間は最大で35日まで指定可能です。この値を「0日」に設定すると自動バックアップが無効化されます。

DBインスタンスを削除した場合や自動バックアップを無効にした場合には、自動バックアップで作成されたスナップショットも同時に削除されます。DBインスタンスの削除後/自動バックアップの無効化後もスナップショットを残しておきたい場合は、

  • 手動でスナップショットを作成しておく
  • 自動スナップショットのコピーを作成しておく

のいずれかの対応をDBインスタンスの削除前/自動バックアップの無効化前に実施しておく必要があります。(この点を考慮して、RDSのマネージメントコンソールからDBインスタンスを削除する場合は、「最終スナップショットを作成」がデフォルトで「はい」に設定されています。)

手動スナップショットの最大数はデフォルトでは「50」の制限があります。これ以上の手動スナップショットの作成が必要な場合は予め上限緩和申請をしておきましょう。

Amazon Redshift

項目 デフォルト値 設定可能な値
バックアップサイクル 不定 設定変更不可
バックアップ開始時刻 不定 設定変更不可
バックアップ保持期間 1日 0日〜35日

Redshiftではバックアップサイクルと開始時刻を指定できません。またRDSのようなポイントインタイプリカバリの機能は提供されていません。Redshiftの管理者ガイドには、

Amazon Redshiftは定期的にそのクラスターのスナップショットが作成されます

と記載があるのみでバックアップサイクルと開始時刻ついての詳細には触れられていませんが、手元の環境で確認する限り、クラスターの初回作成時にスナップショットが作成され、以降おおよそ8時間毎に自動スナップショットが作成されるようです。また、具体的なしきい値までは確認できませんでしたが、データベースの使用量の増加もスナップショットのトリガーとなっているようです。

いずれにしろ自動スナップショットはその作成タイミングをユーザーサイドでコントロールできないので、特定の時間にスナップショットを作成したい、という要件がある場合は、定期的に手動スナップショットを作成するといった仕組みを導入する必要があります。

DBインスタンスを削除した場合/自動バックアップを無効にした場合は自動スナップショットも同時に削除される、という仕様はRDSと同様です。手動スナップショットのデフォルトの最大数は「20」です。

Amazon ElastiCache(Redis)

項目 デフォルト値 設定可能な値
バックアップサイクル 1回/日 設定変更不可
バックアップ開始時刻 リージョンごとに8時間の時間ブロックからランダムに選択される 「開始時刻」と「期間(1〜3時間)」をUTCで指定
バックアップ保持期間 1日 0日〜35日

ElastiCache(Redis)はRDSと同様に1回/日のサイクルで、バックアップ開始時刻を指定することができます。指定できる期間は1時間〜3時間まで(0.5時間刻み)と、最小値がRDSとは若干異なっています。

ElastiCache(Redis)のスナップショットは内部的にはBGSAVEが実行されます。スナップショット作成中のRedisの性能劣化をさけるため、可能であればリードレプリカノードからスナップショットを作成するのがベストプラクティスとなっています。

DBインスタンスを削除した場合/自動バックアップを無効にした場合は自動スナップショットも同時に削除される、という仕様はRDSと同様です。手動スナップショットについては連続する24時間の間に、クラスターごとに20を超える手動スナップショットを作成することはできないという制限があるので注意しましょう。また、「cache.t1.micro」と「cache.t2.*」ノードについてはスナップショットの機能自体がサポートされていないため、こちらも注意が必要です。

まとめ

マネージドサービスならではの便利機能である自動バックアップですが、サービス毎に微妙に仕様が異なっているので、これらの仕様を正しく理解した上でバックアップ/リカバリ設計を行いましょう。

また自動および手動スナップショットの保存領域(バックアップストレージ)はAWSの課金対象となっていますが、無料枠が存在します。バックアップ保持期間を決める際にはこの無料枠も1つの判断材料になるかと思います。

サービス バックアップストレージの無料枠 備考
RDB DBインスタンスのストレージ容量と同容量 1TBのストレージであれば、スナップショットは合計で1TB分までは無料
Redshift クラスターのストレージ容量と同容量 同上
ElastiCache(Redis) クラスターごとに1つのスナップショットのストレージ領域