はじめに
DynamoDBを使うなら最初に設定しておきたい5つのポイント
上記記事の設定しておきたいポイントその1として紹介した、ポイントインタイムリカバリ(Point-in-Time Recovery:PITR) について、本記事ではAWSコンソールから設定する方法を紹介したいと思います。
コンソール画面のスクショ付きで作成しているので、少しでも参考になれば幸いです。
PITR(ポイントインタイムリカバリ)とは?
おさらいにはなりますが、
PITRは、DynamoDBテーブルを過去35日以内の任意の時点に復元できる機能です。
例えば、次のようなケースで役立ちます。
- 誤ってデータを削除してしまった
- アプリケーションのバグで大量のデータを書き換えてしまった
- DELETEやUPDATEを誤って実行した
イメージ
10:00 正常
11:30 誤ってDELETE
12:00 障害に気付く
│
▼
11:29時点へ復元
本番環境では有効化を強くおすすめします。
PITRの注意点
設定する前に知っておきたいポイントです。
- 過去35日以内の任意の時点へ復元可能
- 復元先は新しいテーブルとして作成される
- 元のテーブルが上書きされるわけではない
- PITRを有効にすると追加料金が発生する
設定手順
① DynamoDBを開く
AWSマネジメントコンソールから
DynamoDB
を開きます。
② 対象テーブルを選択
左メニューの
「テーブル」
をクリックします。
一覧からPITRを有効化したいテーブルを選択します。
③ 「バックアップ」を選択
テーブル画面を開いたら、
上部メニューの
「バックアップ」
をクリックします。
④ ポイントインタイムリカバリを有効化
「ポイントインタイムリカバリ」の項目にある
「編集」
をクリックします。
表示された画面で
①ポイントタイムリカバリの有効化(Enable)
を選択します。
続いてバックアップリカバリ期間を
②任意の値に設定
します。
最後に
③保存
をクリックすれば設定完了です。
有効になったか確認する
設定後、
バックアップ画面で
状態:オン
となっていれば設定完了です。
◎よくある誤解ポイント
PITRは有効化しただけで固定料金が発生するわけではありません。
課金はPITRが有効なテーブルの保存データ容量に基づいて行われます。そのため、テーブル作成直後でデータが保存されていない場合は、PITRを有効化していても料金は基本的に発生しません。ただし、データを保存すると、その容量に応じてPITR料金が発生します。
実際に復元するときは?
PITRを利用して復元する場合は、
対象テーブルの
「ポイントタイムリカバリ」→「復元」
を選択します。
復元時には、
- 復元日時
- 新しいテーブル名
を指定します。
sample-table
│
復元
│
▼
sample-table-restore
※元のテーブルは変更されません。
AWS CLIで設定する方法
CLIから有効化することもできます。
aws dynamodb update-continuous-backups \
--table-name sample-table \
--point-in-time-recovery-specification \
PointInTimeRecoveryEnabled=true
状態を確認する場合はこちらです。
aws dynamodb describe-continuous-backups \
--table-name sample-table
よくある質問
Q. PITRとバックアップは何が違いますか?
| PITR | オンデマンドバックアップ |
|---|---|
| 過去35日以内なら任意の時点へ復元可能 | バックアップ取得時点のみ復元可能 |
| 自動で継続バックアップ | 手動または自動で取得 |
| 障害復旧向け | 長期保存向け |
両方を併用するケースも多くあります。
Q. 元のテーブルは上書きされますか?
いいえ。
復元すると新しいテーブルとして作成されます。
そのため、安全にデータを確認してから切り替えることができます。
Q. 無効化できますか?
はい。
同じ画面からPITRを無効化することも可能です。
ただし、本番環境では無効化しないことをおすすめします。
まとめ
DynamoDBのPITRは、万が一のデータ損失に備えるための非常に重要な機能です。
設定は数クリックで完了するため、テーブル作成後はすぐに有効化しておきましょう。
設定手順のおさらい
- DynamoDBを開く
- テーブルを選択
- **「バックアップ」**をクリック
- ポイントインタイムリカバリを有効化
- 保存して完了
本番環境ではもちろん、検証環境でも誤操作に備えてPITRを有効にしておくと安心です。








