0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon DynamoDBのバックアップ・リストア方法について整理する

Last updated at Posted at 2024-12-10

1. はじめに

本記事では、Amazon DynamoDBのバックアップ・リストア方法を紹介し、それぞれの特徴を整理します。実際にバックアップからリストアまでのやり方についても記載しています。
今回は以下の5つの方法を紹介します。

2. いきなりまとめ

3章以降で、それぞれのバックアップ・リストア方法について詳細を説明します。以下の表は、早見表としてそれぞれの特徴を比較するできるように作成しました。

DynamoDBのオンデマンドバックアップ AWS Backupのオンデマンドバックアップ AWS Backupのバックアッププラン DynamoDBのポイントインタイムリカバリ(PITR)機能 DynamoDBのS3へのエクスポート・インポート機能
バックアップ フルバックアップ フルバックアップ フルバックアップ 増分バックアップ フルバックアップと増分バックアップ選択可能
バックアップ方法 手動 手動 自動 自動 手動
保持期間 指定不可
(無期限)
1日~無期限
指定可能
1日~無期限
指定可能
35日前~5分前
自動保存
指定可能(S3のライフサイクルルール設定必要)
PITRを使用するため、エクスポート可能なのは直近35日間のデータのみ
バックアップ形式 テーブル テーブル テーブル テーブル JSON/Amazon Ion
バックアップ保存場所 DynamoDB AWS Backupバックアップボールト AWS Backupバックアップボール DynamoDB S3バケット
リストア方法 バックアップからの復元 バックアップからの復元 バックアップからの復元 復元ポイントを指定して復元 S3ファイルから新規テーブルを作成
考えられる主な用途 現時点や特定の時点でのテーブルのバックアップをすぐに取りたいとき 左に加えて、AWS Backup側でまとめてバックアップデータを管理したいとき 定期的にバックアップを取得したいとき 定期的なバックアップ取得を簡単に行いたいとき(ただし35日以上の保持要件がない場合) テーブルデータをファイル形式で保管したいとき、バックアップデータを安価に保管したいとき

3. DynamoDBのオンデマンドバックアップ機能

3-1. 概要

DynamoDBのコンソールから、DynamoDBテーブルごとのバックアップを手動で取得する方法です。

3-2. 特徴

3-2-1. バックアップ

機能はとてもシンプルで、テーブルを指定しバックアップ名を設定するだけでバックアップを作成することができます。

フルバックアップ
オンデマンドバックアップを作成するたびにテーブルデータ全体がバックアップされます。

保存期間指定不可
バックアップは手動で削除しないかぎり消えません。

3-2-2. リストア

新規のテーブルとして作成
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。

  • テーブル名
  • セカンダリインデックスをリストアに含むかどうか
  • テーブルをリストアするリージョン
  • 暗号化

以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。

  • Auto Scalingポリシー
  • IAMポリシー
  • Amazon CloudWatch メトリクスおよびアラーム
  • タグ
  • ストリーム設定
  • 有効期限 (TTL) 設定
  • 削除保護設定
  • ポイントインタイムリカバリ (PITR) 設定

3-3. 料金

バックアップとリストアにかかる料金を分けて紹介します。
なお、今回は東京リージョンの価格で計算しています。

バックアップストレージ料金:USD 0.114/GB -月
リストア料金(1回あたり):USD 0.171/GB

3-4. 手順

3-4-1. バックアップ手順

  1. バックアップ設定への移動
    バックアップを取得するDynamoDBテーブルのバックアップタブを開き、バックアップの作成をクリック。オンデマンドバックアップの作成を選択する。(ここで、バックアップのスケジュールを設定を選択すると、後ほど説明するAWS Backupのバックアッププラン機能を使ったバックアップの作成ができる。)
    image.png
    image.png
  2. バックアップを作成
    DynamoDBの機能でバックアップを作成するには、設定をカスタマイズを選択し、バックアップの管理DynamoDBを使用したバックアップを選択する。
    バックアップ名を指定し、バックアップを作成する。
    image.png
  3. バックアップ作成完了
    image.png

3-4-2. リストア手順

  1. リストアするテーブルを選択し、復元をクリック
    image.png

  2. リストアするテーブルの設定を行う

    • テーブル名
    • セカンダリインデックス復元の有無
    • 復元先リージョン
    • 暗号化キーの選択
      上記の設定ができたら、復元を実行する。
      image.png
  3. DynamoDBテーブルが作成されていることを確認
    作成はテーブルのサイズに応じて10分以上かかる場合があります。
    image.png

  4. テーブルがアクティブになり、項目数が取得できることを確認
    image.png

4. AWS Backupのオンデマンドバックアップ機能

4-1. 概要

AWS Backupにあるオンデマンドバックアップ機能を使って、バックアップを取得する方法です。DynamoDBのオンデマンドバックアップ機能と似ていますが、より柔軟な設定が可能になります。

特徴

DynamoDBのオンデマンドバックアップとの差分を中心に特徴を紹介します。

4-1-1. バックアップ

バックアップの保持期間を指定
1日~永続で選択できます。

バックアップストレージの選択
通常バックアップはウォームストレージに保管されますが、コールドストレージに移行する設定が可能です。
コールドストレージはウォームストレージに比べてバックアップストレージ料金が安いですが、その代わりにリストア料金が高いため、頻繁にリストアしないバックアップを保管する際に活用できます。
コールドストレージに移行されたバックアップは、コールドストレージに最低90日保存される必要があります。
AWSは8日間以上ウォームストレージに保管することを推奨しています。

コールドストレージの機能を使用するには、DynamoDBのバックアップ設定から、AWS Backupの高度な機能を有効化する必要があります。有効化することによる追加費用はかかりません。
image.png

バックアップボールトの選択
バックアップボールトは、バックアップを整理するためのコンテナで、色々なサービスのバックアップをまとめて管理することができます。バックアップボールトでは暗号化キーやアクセスポリシーを指定できます。

バックアップ作成時のIAMロールの指定
AWS Backupがバックアップを作成するため、バックアップ作成時に使用するIAMロールを指定する必要があります。デフォルトのロールまたは任意のロールを指定することができます。

4-1-2. リストア

新規のテーブルとして作成
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。

  • テーブル名
  • 暗号化
  • リストア時に使用するIAMロール

AWS Backupを使用したバックアップの場合、インデックスは元のテーブルの設定が自動で引き継がれて復元されます。
別のリージョンで復元を実施する場合、取得したバックアップを別リージョンへコピーして、コピーしたリージョンから復元する必要があります。

以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。

  • Auto Scalingポリシー
  • IAMポリシー
  • Amazon CloudWatch メトリクスおよびアラーム
  • タグ
  • ストリーム設定
  • 有効期限 (TTL) 設定
  • 削除保護設定
  • ポイントインタイムリカバリ (PITR) 設定

4-2. 料金

DynamoDBのオンデマンドバックアップと同じ料金体系のため、こちらでの説明は割愛します。

4-3. 手順

4-3-1. バックアップ手順

  1. DynamoDBのバックアップ機能を使用するときと同じように、バックアップを実施するテーブルのバックアップタブから、バックアップの作成をクリックし、オンデマンドバックアップの作成をクリック
    image.png
    image.png
  2. AWS Backupを使用したバックアップを選択し、バックアップの設定をする
    • バックアップ期間
      • 1時間以内に開始する場合は今すぐバックアップを作成を選択、時間を指定する場合はバックアップ期間をカスタマイズを選択
    • コールドストレージへの移行有無
      • 移行する場合は、コールドストレージに移行する前にウォームストレージに保持する期間を選択
    • 保持期間
      • バックアップを保持する合計期間を選択
    • バックアップボールトの選択
    • IAMロールの選択
    • タグの追加
      image.png
      image.png
  3. バックアップ作成完了。今すぐバックアップを作成を選択しても、バックアップが作成されるまで1時間程度かかる可能性があるので注意。
    image.png

4-3-2. リストア手順

  1. 先ほど作成されたバックアップを選択し、復元をクリック
    image.png
  2. リストアするテーブルの設定を行う
    • テーブル名
    • 暗号化キーの選択
    • 復元時に使用するロールを選択
      image.png
  3. DynamoDBテーブルが作成されていることを確認
    作成はテーブルのサイズに応じて10分以上かかる場合があります。
    image.png
  4. テーブルがアクティブになり、項目数が取得できることを確認
    image.png

5. AWS Backupのバックアッププラン機能

5-1. 概要

AWS Backupの機能であるバックアッププランを作成しリソース割り当てでDynamoDBテーブルを割り当てることで、バックアップを実施することができます。
複数のリソースのバックアップを同じルールで取りたいときに、プランを作成することでまとめて管理することができます。

5-2. 特徴

5-2-1. バックアップ

AWS Backupのオンデマンドバックアップ機能との差分は前述のとおり、バックアッププランに対して複数のリソースを割り当てることができることに加えて以下の点になります。

バックアップの頻度
バックアップ頻度は、12時間ごと・毎日・毎週・毎月から選択できます。cron式を指定することもできます。

ライフサイクル設定
通常バックアップはウォームストレージに保管されますが、コールドストレージに移行する設定が可能です。
コールドストレージはウォームストレージに比べてバックアップストレージ料金が安いですが、その代わりにリストア料金が高いため、頻繁にリストアしないバックアップを保管する際に活用できます。
コールドストレージに移行されたバックアップは、コールドストレージに最低90日保存される必要があります。
AWSは8日間以上ウォームストレージに保管することを推奨しています。

別リージョンへのコピー
オプションで、別リージョンへのバックアップのコピーを作成する設定をすることができます。
別アカウントへのコピーも可能です。
上述のライフサイクル設定は、元のリージョンと異なる設定にカスタマイズもすることができます。

コールドストレージやバックアップのコピーの機能を使用するには、DynamoDBのバックアップ設定から、AWS Backupの高度な機能を有効化する必要があります。有効化することによる追加費用はかかりません。
image.png

5-2-2. リストア

新規のテーブルとして作成
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。

  • テーブル名
  • 暗号化
  • リストア時に使用するIAMロール

AWS Backupを使用したバックアップの場合、インデックスは元のテーブルの設定が自動で引き継がれて復元されます。
別のリージョンで復元を実施する場合、バックアッププランの設定で別リージョンへのコピーを設定しておくか、オンデマンドバックアップの時と同様に、1バックアップ単位で別リージョンへコピーして、コピーしたリージョンから復元する必要があります。

以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。

  • Auto Scalingポリシー
  • IAMポリシー
  • Amazon CloudWatch メトリクスおよびアラーム
  • タグ
  • ストリーム設定
  • 有効期限 (TTL) 設定
  • 削除保護設定
  • ポイントインタイムリカバリ (PITR) 設定

5-3. 料金

バックアップとリストアにかかる料金を分けて紹介します。
なお、今回は東京リージョンの価格で計算しています。
下記の料金は1回のバックアップストレージにかかる料金のため、バックアップ頻度や保持期間に応じて合計のストレージ料金を計算する必要があります。

DynamoDBはAWS Backupの増分バックアップ機能に対応していないため、毎回テーブル全体のバックアップが行われます。料金もその前提で計算する必要があります。

バックアップ
ウォームストレージの料金:USD 0.114/GB -月
コールドストレージの料金:USD 0.0342/GB -月

リストア
ウォームストレージからのリストア料金(1回あたり):USD 0.171/GB
コールドストレージからのリストア料金(1回あたり):USD 0.228/GB

5-4. 手順

5-4-1. バックアップ手順

  1. AWS Backupのコンソールを開き、ダッシュボードからバックアッププランを作成をクリック
    image.png

  2. バックアッププランを設定する
    今回は新しいプランを立てるから設定をする。JSON形式で設定する方法や、AWS Backupが提供するテンプレートでプランを簡単に設定する方法もあります。

image.png
image.png
image.png
image.png
3. リソースの割り当てを設定
image.png
image.png
4. 設定したバックアップ開始時間以降にバックアップが作成されたことを確認
image.png

5-4-2. リストア手順

  1. 先ほど作成されたバックアップを選択し、復元をクリック
    image.png

  2. リストアするテーブルの設定を行い、復元を実行する

    • テーブル名
    • 暗号化キーの選択
    • 復元時に使用するロールを選択
      image.png
  3. DynamoDBテーブルが作成されていることを確認
    作成はテーブルのサイズに応じて10分以上かかる場合があります。
    image.png

  4. テーブルがアクティブになり、項目数が取得できることを確認
    image.png

6. DynamoDBのポイントインタイムリカバリ(PITR)機能

6-1. 概要

過去35日間~5分前の任意の時点にテーブルを復元することができる機能です。誤ってデータ削除や上書きをしてしまった際に、正常な状態に戻すことができます。

6-2. 特徴

ポイントインタイムリカバリには以下の特徴があります。

6-2-1. バックアップ

秒単位で復元時点の指定が可能
復元したい時点を秒単位で指定することができます。

自動バックアップ
PITRを有効にするだけで、自動でバックアップが実行されます。

6-2-2. リストア

新規のテーブルとして作成
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。

  • テーブル名
  • セカンダリインデックスをリストアに含むかどうか
  • テーブルをリストアするリージョン
  • 暗号化

復元したい日時を指定
最新の時間または秒単位で時間を指定することができます。

以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。

  • Auto Scalingポリシー
  • IAMポリシー
  • Amazon CloudWatch メトリクスおよびアラーム
  • タグ
  • ストリーム設定
  • 有効期限 (TTL) 設定
  • 削除保護設定
  • ポイントインタイムリカバリ (PITR) 設定

6-3. 料金

バックアップとリストアにかかる料金を分けて紹介します。
なお、今回は東京リージョンの価格で計算しています。

バックアップ
PITRの料金:USD 0.228/GB-月
PITRが有効になっているDynamoDBテーブルのサイズが毎月継続的にモニタリングされ、バックアップ料金が決定されるようになっています。

リストア
リストア料金(1回あたり):USD 0.171/GB

6-4. 手順

6-4-1. バックアップ手順

  1. テーブルのバックアップから、ポイントインタイムリカバリ(PITR)編集をクリック
    image.png
  2. ポイントインタイムリカバリの有効化にチェックを入れて、変更を保存する
    image.png
  3. 状態がオンになり、復元ポイントが表示されることを確認
    image.png

6-4-2. リストア手順

  1. ポイントインタイムリカバリの復元をクリック
    image.png
  2. リストアするテーブルの設定を行い、復元を実行する
    • テーブル名
    • ポイントインタイムリカバリで、復元するポイントを指定する
    • セカンダリインデックスの復元有無の選択
    • 復元先リージョンの選択
    • 暗号化キーの選択
      image.png
      image.png
  3. DynamoDBテーブルが作成されていることを確認
    作成はテーブルのサイズに応じて10分以上かかる場合があります。
    image.png
  4. テーブルがアクティブになり、項目数が取得できることを確認
    image.png

7. DynamoDBのS3へのエクスポート・インポート機能

7-1. 概要

DynamoDBのテーブルデータをS3バケットにエクスポートすることでバックアップとして保存することができます。エクスポートは手動で実行します。
エクスポートしたデータは、インポート機能でDynamoDBテーブルにインポートされます。インポート時は新しいテーブルが作成され、既存のテーブルへのインポートはサポートされていません。

S3エクスポートは、PITRの任意の時点を選択してエクスポートすることができます。そのため、PITRを有効化する必要があります。

7-2. 特徴

7-2-1. エクスポート

S3バケットの指定
エクスポートするS3バケットを指定する必要があります。
バケットの所有者は、同じAWSアカウントまたは別のAWSアカウントを指定します。

フルエクスポートと増分エクスポート
エクスポートは、フルエクスポートと増分エクスポートを選択できます。
フルエクスポートは、現時刻または任意の時刻を指定し、その時点でのテーブルデータがエクスポートされます。
増分エクスポートは、指定した期間中テーブルに加えられた変更のうち最終状態がエクスポートされます。

エクスポートのファイル形式
JSON形式と、Amazon Ion形式を選択できます。

7-2-2. インポート

インポートするファイルの形式
ファイル形式は、CSV・DynamoDB JSON・Amazon Ion形式から選択できます。

ファイルの圧縮タイプ
圧縮(ZSTDまたはGZIP)と非圧縮形式を選択できます。

テーブル設定
インポート時は新しいテーブルを作成します。既存のテーブルへのインポートは現時点ではサポートされていません。
新規テーブルの作成になるため、テーブル作成時の設定が必要になります。

7-3. 料金

エクスポートとインポートの料金のほかに、ポイントインタイムリカバリ(PITR)の料金やS3へのデータ保存料金がかかります。
バックアップデータの保管料金はS3バケットのストレージ料金に準ずるため、他のバックアップに比べて安価に保管することができます。

バックアップ

  • エクスポート:USD 0.114/GB
  • PITR:USD 0.228/GB-月
  • S3への保管:USD 0.025/GB-月

リストア
インポート:USD 0.171/GB

7-4. 手順

7-4-1. エクスポート手順

  1. 事前にエクスポートするS3バケットを用意しておく
  2. テーブルのエクスポートおよびストリームタブを開き、S3エクスポートをクリック
    image.png
  3. 以下の設定を行い、エクスポートを実行する
    • 送信先S3バケットの指定
    • バケットの所有アカウントの指定
    • フルエクスポートか増分エクスポートかの選択
    • エクスポートする時点の選択
    • エクスポートするファイル形式の選択
    • 暗号化タイプの選択
      image.png
      image.png
  4. エクスポートが実行されていることを確認
    エクスポートには10分以上かかることがある
    image.png
  5. エクスポートが完了したら、S3バケットにファイルが保存されたことを確認する
    image.png

7-4-2. インポート手順

  1. DynamoDBのコンソールからS3からのインポートを開く
    image.png

  2. インポートの設定を行う

    • ソースS3URLの選択
      • DynamoDBからS3エクスポートしたデータをインポートする場合は、s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/data/を指定する
    • S3バケット所有者の選択
    • ソースファイルの圧縮タイプの選択
    • ソースファイルのフォーマットの選択
      image.png
  3. テーブルの詳細設定を行う

    • テーブル名
    • パーティションキー・ソートキー
      image.png
  4. テーブルの構成設定を行う

    • 読み込み/書き込みキャパシティの設定
    • グローバルセカンダリインデックス
    • 暗号化
      image.png
      image.png
  5. インポートが開始されたことを確認
    image.png
    数分後に完了したことを確認
    image.png

  6. テーブルがアクティブになり、項目数が取得できることを確認
    image.png

8. まとめ

DynamoDBのテーブルのバックアップ・リストアについて5つの方法を紹介しました。
DynamoDBを使用するかAWS Backupを使用するかS3を使用するかで、設定項目や可能なことが変わってくるため、その都度適切な方法を選択できるよう、それぞれの方法の特徴を頭に入れておきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?