

# DynamoDB を使用した DynamoDB テーブルのバックアップと復元の仕組み
<a name="CreateBackup"></a>

DynamoDB オンデマンドバックアップ機能を使用して、Amazon DynamoDB テーブルの完全バックアップを作成できます。この機能は、AWS Backup とは関係なく利用できます。このセクションでは、DynamoDB のバックアップおよび復元プロセス中に発生するこをの概要について説明します。

## バックアップ
<a name="CreateBackup_HowItWorks"></a>

DynamoDB を使用してオンデマンドバックアップを作成すると、リクエストのタイムマーカーがカタログ化されます。このバックアップは、前回のテーブル全体のスナップショットへのリクエスト時間までにすべての変更を適用して、非同期的に作成されます。DynamoDB のバックアップリクエストは瞬時に処理され、数分以内に復元できる状態になります。

**注記**  
オンデマンドバックアップを作成する度に、テーブルデータ全体がバックアップされます。オンデマンドバックアップの実行可能数に制限はありません。

DynamoDB では、テーブルのプロビジョンされたスループットを消費することなく、バックアップすることができます。

DynamoDB バックアップでは、項目間の因果整合性は保証されません。ただし、バックアップの更新間のスキューは、通常 1 秒未満です。

バックアップ進行中は、以下を行うことができません。
+ バックアップオペレーションの一時停止またはキャンセル。
+ バックアップのソーステーブルの削除。
+ テーブルのバックアップ中におけるテーブルのバックアップの無効化。

スケジューリングスクリプトとクリーンアップジョブを作成したくない場合は、AWS Backup を使用して DynamoDB テーブルのスケジュールと保存ポリシーを含むバックアップ計画を作成できます。AWS Backup はバックアップを実行し、有効期限が切れると削除します。詳細については、「[AWS Backup デベロッパーガイド](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html)」を参照してください。

AWS Backup に加えて、AWS Lambda 関数を使用して、定期的または以降のバックアップをスケジュールできます。詳細については、ブログ記事「[Amazon DynamoDB のオンデマンドバックアップをスケジュールするサーバーレスソリューション](https://aws.amazon.com/blogs/database/a-serverless-solution-to-schedule-your-amazon-dynamodb-on-demand-backup/)」を参照してください。

コンソールを使用している場合、AWS Backup を使用して作成されたバックアップは、[**Backup type (バックアップタイプ)**] が `AWS` に設定された状態で [**Backups (バックアップ)**] タブに一覧表示されます。

**注記**  
DynamoDB コンソールを使用して、[**Backup type (バックアップタイプ)**] が AWS でマークされたバックアップを削除することはできません。これらのバックアップを管理するには、AWS Backup コンソールを使用します。

バックアップを実行する方法については、「[DynamoDB テーブルのバックアップ](Backup.Tutorial.md)」を参照してください。

## 復元
<a name="CreateBackup_HowItWorks-restore"></a>

テーブルは、テーブルのプロビジョニングされたスループットを消費することなく復元します。DynamoDB バックアップからテーブル全体を復元することも、送信先テーブルの設定を構成することもできます。復元を実行するときに、次のテーブル設定を変更できます。
+ グローバルセカンダリインデックス (GSI)
+ ローカルセカンダリインデックス (LSI)
+ 請求モード
+ プロビジョニングされた読み込みおよび書き込みキャパシティ
+ 暗号化設定

**重要**  
テーブル全体を復元する場合、送信先テーブルはバックアップがリクエストされた時間に記録されたように、送信元テーブルと同じプロビジョニングされた読み込みキャパシティユニットおよびプロビジョニングされた書き込みキャパシティユニットを使用して設定されます。復元プロセスでは、ローカルセカンダリインデックスおよびグローバルセカンダリインデックスも復元されます。

また、バックアップが存在する別のリージョンに復元済みテーブルが作成されるように、AWS リージョン全体で DynamoDB テーブルデータを復元することもできます。AWS 商用リージョン、AWS 中国リージョン、および AWS GovCloud (米国) リージョン間でクロスリージョン復元を実行できます。送信元リージョンから転送したデータと、送信先リージョンの新しいテーブルの復元に対してのみ料金が発生します。

新しく復元されるテーブルで、一部またはすべてのセカンダリインデックスの作成を除外すると、復元はより高速でコスト効率が高くなります。

以下は、復元されたテーブルで手動で設定する必要があります。
+ Auto Scaling ポリシー
+ AWS Identity and Access Management (IAM) ポリシー
+ Amazon CloudWatch メトリクスおよびアラーム
+ タグ
+ ストリーム設定
+ 有効期限 (TTL) 設定
+ 削除保護設定
+ ポイントインタイムリカバリ (PITR) 設定

テーブルデータ全体は、バックアップから新しいテーブルにのみ復元することができます。復元されたテーブルに書き込むことができるのは、アクティブになってからです。

**注記**  
 復元オペレーション中は既存のテーブルを上書きすることはできません。

復元時間は、テーブルの構成 (テーブルのサイズ、基礎となるパーティションの数など) およびその他の関連する変数に直接関係しています。災害対策を計画する際のベストプラクティスは、平均復元完了時間を定期的に記録し、これらの時間が目標復旧時間全体にどのように影響するかを確認することです。

復元を実行する方法については、「[バックアップからの DynamoDB テーブルの復元](Restore.Tutorial.md)」を参照してください。

IAM ポリシーを使用してアクセスコントロールできます。詳細については、「[DynamoDB バックアップおよび復元での IAM の使用](backuprestore_IAM.md)」を参照してください。

バックアップおよび復元を行うコンソールと API のアクションはすべて、AWS CloudTrail にキャプチャおよび記録され、ログ記録、継続的モニタリング、監査に使用されます。