AWSの各データベースサービスのバックアップ種類をまとめてみる
最近DynamoDBのバックアップについて色々と試していたのですが、 最近マネージドデータベースのサービスが増えてきたのでついでに調べてまとめようと思います。
対象のサービスは、
- RDS
- DynamoDB
- ElastiCache
- Neptune
- Amazon Redshift
- Amazon QLDB
- Amazon DocumentDB
- Managed Cassandra Service
です。
※ mysqldumpなどのコマンドを使ったバックアップではなく、マネージドサービスのバックアップ機能に関しての記載です
RDS
DBインスタンスのストレージボリュームのスナップショットを作成し、個々のデータベースだけではなく、そのDBインスタンス全体をバックアップ
- 自動バックアップ
- バックアップウィンドウ中に自動的にバックアップを作成
- 指定したバックアップ保持期間に従ってバックアップを保存
- バックアップ保持期間内の任意の時点でデータベースを復旧可能
- インスタンスを削除するとき、自動バックアップを保持するようにできる
-
自動バックアップが行われない条件
- DBインスタンスが
AVAILABLE
以外の状態 - コピーが同じDBインスタンスの同じリージョンで実行されている間
- DBインスタンスが
- ストレージエンジンに関して
- MySQLでは InnoDBストレージエンジンでのみサポート
- MariaDBでは InnoDB ストレージエンジン (バージョン 10.2 以降) と XtraDB ストレージエンジン (バージョン 10.0/10.1) でのみサポート
- 手動バックアップ
- スナップショットを手動で作成する
- 初回のスナップショットにはフルデータが含まれ、次回以降は直近のスナップショット以降に変更されたデータのみが保存される
- AWS Backupを使用
- Amazon Auroraを除くすべての Amazon RDSデータベースエンジンがサポートされています
DynamoDB
テーブルの完全なバックアップを作成して、規制やコンプライアンス要件を満たすために長期間の保存とアーカイブを行うことができます
- オンデマンドバックアップ(ユーザーバックアップ)
- マネージメントコンソール上で手動実行/API callで実行
- テーブルデータ全体がバックアップされる
- グローバルセカンダリインデックス, ローカルセカンダリインデックス,プロビジョニングされた読み込みおよび書き込みキャパシティーも含む
- 実行中、テーブルのパフォーマンスや可用性に影響を及ぼすことはない
- ソーステーブルと同じAWSリージョンでのみ行うことができる
- ポイントインタイムリカバリ(システムバックアップ)
- DynamoDB テーブルデータを自動バックアップする機能
- 有効化することにより過去35日間(固定)の任意の時点にテーブルを復元することができる
- データに加え、グローバルセカンダリインデックス,ローカルセカンダリインデックス,プロビジョニングされた読み込みおよび書き込みキャパシティー,暗号化設定も含まれる
- 有効になっているテーブルを削除すると、システムバックアップが自動的に作成され、35日間(追加料金なしで)保持される
- AWS Backupを使用
- DynamoDBテーブルのスケジュールと保存ポリシーを含むバックアップ計画を作成できる
ElastiCache
Redisを実行しているAmazon ElastiCacheクラスターで使用することができる。 Memcachedではバックアップは無し。
クラスターモードが無効の場合、cache.t1.microノードではサポートされない。
クラスターモードが有効の場合、クラスターレベル (API または CLI ではレプリケーショングループレベル) でのバックアップの作成のみをサポート。
バックアッププロセス中は、クラスターで他の API または CLI オペレーションを実行できない。
- 自動バックアップ
- バックアップ期間の設定が可能(最短時間は60分)
- バックアップ保持期限の設定が可能
- 保持期限を5に設定すると、作成されたバックアップは5日間保持されます。保持期限が切れると、バックアップは自動的に削除
- 最大バックアップ保持期限は35日
- 0にすると自動バックアップを無効にできる
- 手動バックアップ
- 手動バックアップには自動的に削除される保持期間はなく、必要なくなったら手動で削除する
- クラスターまたはノードを削除した場合でも、手動バックアップはすべて保持
- 連続する24時間で、クラスターのノードあたり20個までの手動バックアップを作成できる
Neptune
クラスターボリュームを自動的にバックアップし、バックアップ保持期間分の復元データを保持できる
バックアップ保持期間を超えたバックアップを保持する場合は、クラスターボリュームの中にデータのスナップショットを作成できます
- 自動バックアップ
- 優先されるバックアップウィンドウ中に毎日行われる
- バックアップウィンドウが終了した後もバックアップが完了するまでバックアップが継続
- バックアッププロセスの開始時にストレージ I/O が一時中断することがあります (通常は数秒間)
- 優先バックアップウィンドウを指定しない場合、Neptuneによりデフォルトの30分のバックアップウィンドウが割り当てられます
- バックアップ保持期間 (1~35日) を指定できる
- 手動バックアップ
- マネジメントコンソール、AWS CLI、または Neptune API を使用して作成できる
- スナップショットを作成するためにかかる時間は、データベースのサイズによって異なる
Amazon Redshift
クラスターのポイントインタイムバックアップ。自動と手動の2つのタイプのスナップショットがある。
前回のスナップショット以降にクラスターに加えられた増分変更を追跡する、増分スナップショットを自動的に作成
別のリージョンにスナップショットをコピーすることができる
- 自動バックアップ(スナップショット)
- クラスターに対して有効になると、Amazon Redshift は定期的にそのクラスターのスナップショットが作成される
- デフォルトでは、Amazon Redshift は約 8 時間ごと、または 1 ノードのデータが変更されるごとに 5 GB ごと (あるいはそのいずれか早い方) にスナップショットを作成
- スナップショットスケジュールを作成することができる
- 自動スナップショットは、クラスターを作成するときデフォルトで有効
- 保持期間の終了時に削除される
- デフォルトの保持期間は1日だが、変更可能
- 保持期間を0にすれば無効にできる
- 手動で削除することはできない
- 保存期間が終了した場合、クラスターの自動スナップショットを無効にした場合、またはクラスターを削除した場合に、Amazon Redshift によって削除される
- 自動スナップショットを無効にするかクラスタを削除するまで、Amazon Redshift は最新の自動スナップショットを保持
- 手動バックアップ(スナップショット)
- いつでも取得でき、デフォルトでは、手動スナップショットは、クラスターを削除した後も、無限に保持される
- 保持期間を指定(デフォルト365日),変更も可能
- 作成できる手動スナップショットの合計数を制限するクォータがある(デフォルト20)
- いつでも取得でき、デフォルトでは、手動スナップショットは、クラスターを削除した後も、無限に保持される
Amazon QLDB
現在のところ、Amazon QLDB ではバックアップや復元機能はサポートしていませんがS3へのエクスポートを使用できます
- ジャーナルをエクスポート
- Amazon QLDBでは、データ保存用ジャーナルとして知られる、イミュータブルなトランザクションログを使用
- 指定した日時範囲で指定したAmazon S3バケット送信先へのジャーナルブロックエクスポートをリクエストするためのAPIが使用できる
- マネジメントコンソールを使用
- Amazon QLDB API と QLDB ドライバーを使用
- エクスポートされるデータ
- 詳細はこちら
- 各エクスポートリクエストごとに、指定されたS3バケットに2つのマニフェストファイルが作成される
- 最初のマニフェスト(エクスポートジョブが開始したことを示す)
s3://bucket/prefix/exportId.started.manifest
- 最終的なマニフェスト(特定のジャーナルストランドのエクスポートジョブが完了したことを示す)
s3://bucket/prefix/exportId.strandId.completed.manifest
- 最初のマニフェスト(エクスポートジョブが開始したことを示す)
- Amazon Ion 形式 (.ion) のジャーナルデータオブジェクト
s3://bucket/prefix/yyyy/mm/dd/hh/strandId.startSn-endSn.ion
- 出力データはチャンクに分割されます。各チャンクオブジェクトの最大サイズは10MBに制限
Amazon DocumentDB
Amazon S3 に 1 – 35 日間、継続的にバックアップするため、バックアップ保持期間内の任意の時点にすばやく復元できます。Amazon DocumentDB は、この継続的なバックアッププロセスの一部として、データの自動スナップショットを作成します
- 自動バックアップ(スナップショット)
- クラスターを作成または変更するときに、バックアップ保持期間を1~35日の整数値に設定
- 自動バックアップを無効にすることはできない
- バックアップウィンドウも設定する。これは、自動スナップショットが作成される毎日の時間
- 変更の増分記録が作成される
- バックアップ保持期間内の任意の時点にクラスターを復元できる
- 自動スナップショットを手動で削除することはできない。クラスターが削除されると自動スナップショットは削除される
- 手動バックアップ(スナップショット)
- マネジメントコンソール/AWS CLIを使用
- クラスターのデータの完全バックアップが作成および保存される
- クラスターを削除しても、手動スナップショットは削除されない
- リージョンあたりの手動スナップショットの最大数は 100 個に制限
Managed Cassandra Service
現在、バックアップに関するドキュメント記載は無く、マネージメントコンソール上からも見当たらない
まとめ
マネージドデータベースサービスのバックアップ種類についてまとめました。
どのサービスにも言えることですが、RTO,RPOを満たすバックアッププランの作成が必要になってきます。 自動バックアップがリソースの削除とともに削除されるサービスもあるので、定期的に手動バックアップも取っておく方が良いこともあります(オペミスで誤って削除してしまった時など)
またバックアップのコストについても考えなければいけません。 不要になったスナップショットは削除したり、Glacierにアーカイブすることを検討しましょう。
この記事では記載しませんでしたが、バックアップからの復旧に関しても事前に検証することも必要です。