Amazon RDS for Db2: スナップショットの作成とリストア

Amazon RDS for Db2でDBをバックアップを取得するには、いわゆるDb2のバックアップコマンドで作成するのではなく、以下の方法で取得します:

1. [「RDS 自動バックアップ」 で1日1回自動取得](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html)
2. [スナップショットを手動で作成し取得](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)
3. [AWS Backup(AWSの別サービス)を使用し取得](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/AutomatedBackups.AWSBackup.html)


ここでは「1. 「RDS 自動バックアップ」 で1日1回自動取得」と「2. スナップショットを手動で作成し取得」でDBスナップショット（≒DBバックアップ）を取得する方法と、そのリストア方法、ポイントタイムリカバリーについて説明します。

# 1.  「RDS 自動バックアップ」 で1日1回自動取得

### 1-1. 自動バックアップを有効化
 「RDS 自動バックアップ」 で1日1回自動取得するためには、DB作成時に「自動バックアップを有効にします」にチェックを入れ、バックアップ保持期間を設定します。
 または作成後でも設定の変更で設定可能です。


 > 自動バックアップウィンドウ中、バックアッププロセスのスタート時にストレージ I/O が一時中断することがあります (通常は数秒間)。マルチ AZ 配置のバックアップ中は、レイテンシーが数分間高くなることがあります。
 (中略)
 Db2 では、バックアップがスタンバイから取得されている場合でも、バックアップ中に I/O アクティビティが短時間、中断されます。
 
 公式ドキュメント[自動バックアップの管理- バックアップウィンドウ](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)より引用

バックアップ中に I/O アクティビティが短時間、中断されるとのことなので、本番環境の時間設定は注意するようにお願いします。

### 1-2. 「バックアップウィンドウ」の指定
#### 1-2-1. 「ウィンドウの指定」を選択し、　開始時間と期間を設定します　
**開始時間はUTCで設定**します。
バックアップ期間は、DB インスタンスの週 1 回のメンテナンス期間と重複させることはできません。

 例えば日本時間0:00に開始したい場合は**15：00**と設定します。

 開始時間を**15：00**と設定し、期間　を**0.5時間**と設定した場合:
 - **日本時間の0:00から0.5時間の間に自動バックアップが開始されます**
 - 日本時間の0:00から自動バックアップが開始し、0.5時間までに完了する、という設定では**ない**ので注意してください

 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/860992ae-e73c-1f91-dc59-f44fec0e9afc.png)

 
#### 1-2-2. 「バックアップウィンドウ」を「指定なし」にした場合
[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupWindow)に書かれていますが、Amazon RDS によってデフォルトの 30 分のバックアップ期間が割り当てられます。この期間は、各AWS リージョンの8時間の時間ブロックからランダムに選択されます。

例えば、アジアパシフィック (東京) ap-northeast-1の8時間の時間ブロックは	13:00～21:00 UTC(日本時間22:00～6:00)となっています。


# 2. スナップショットを手動で作成し取得
>Amazon RDS は DB インスタンスのストレージボリュームのスナップショットを作成し、個々のデータベースだけではなく、その DB インスタンス全体をバックアップします。Single-AZ DB インスタンスでこの DB スナップショットを作成すると、I/O が短時間中断します。この時間は、DB インスタンスのサイズやクラスによって異なり、数秒から数分になります。

（公式ドキュメント[シングル AZ DB インスタンスの DB スナップショットの作成](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)より一部引用）

Db2の場合は特記されていないのですが、「RDS 自動バックアップ」 の記載から考えると、マルチAZ構成であってもI/O が短時間中断あると考えられますので、本番環境の実行時間は注意するようにしてください。

#### 2.1 Amazon RDS コンソール https://console.aws.amazon.com/rds/ より、ナビゲーションペインで、[データベース] を選択し、作成する DB インスタンスをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4e7a9341-5b65-db58-4f61-2faa5e8ca8be.png)

#### 2.2 右上の「アクション」から「スナップショットの取得」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/11844a09-3690-80a5-3ec7-6a8fa9ff32d0.png)


#### 2.3 スナップショット名を入力し、「スナップショットの取得」をクリック

「スナップショットのタイプ」はデフォルトのまま「DBインスタンス」です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/ec1c18e3-df95-7555-a621-f7c52eefd5be.png)

上部にメッセージが表示され、「スナップショット」一覧の画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/cac1aeb3-bc63-cde1-448a-84b4dc810fd6.png)

取得が終了すると上部にその旨メッセージが表示されます。
「詳細を表示」をクリックするか、入力したスナップショット名をクリックして、詳細を表示してみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/a5477c83-b083-b0be-c4fb-16ee64df9870.png)

詳細が確認できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e4512970-5a2c-92d7-09cd-b241991a4528.png)


# 3. スナップショットのリストア
参考: [DB スナップショットからの復元](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html)
自動取得したバックアップ(=スナップショット)または手動で取得したスナップショットは、新しい DB インスタンスにリストアできます。**DB スナップショットから既存の DB インスタンスに復元することはできません。**

リストア後のDBインスタンスでリストア元と同じエンドポイントを使用したい場合:
- リストア元を削除するかリストア元のDB識別子を変更してください。
- その後リストア元と同じ(変更した場合は変更前と同じ)DB識別子をリストア時に新規作成するDB識別子として指定してください。DB 識別子が同じであればエンドポイントは同じになります。


#### 3.1 Amazon RDS コンソール https://console.aws.amazon.com/rds/ より、ナビゲーションペインで、[データベース] を選択し、作成する DB インスタンスをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4e7a9341-5b65-db58-4f61-2faa5e8ca8be.png)

#### 3.2 「メンテナンスとバックアップ」タブをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/54c31416-bd1e-1f4d-35ec-c86dacf87187.png)

#### 3.3 一番下のスナップショット からリストアしたいスナップショット名をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/991b4893-8f6a-04da-8d8b-ba398994373c.png)

#### 3.4  右上の「アクション」から「スナップショットを復元」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5ff64a72-c1ed-ebec-8200-15778aeedaa9.png)

#### 3.5   「データーベースの作成」画面で必要事項を入力後、 一番下にある「DBインスタンスを復元」をクリック
新規にDBを作成してリストアします。
新規DBに必要な情報を画面を下にスクロールしながら入力していってください。

**まずはリストア先のDBインスタンス識別子を入力します**
既存と同じ名前にはできません。
>もしリストア後のDBインスタンスでリストア元と同じエンドポイントを使用したい場合は、先にリストア元を削除するか、リストア元のDB識別子をリネームしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4598189a-6bb3-f522-65ff-d9d712bab991.png)

オリジナルと同じ設定になっている部分とそうでない部分があるようなので、同じにしたい場合は1つ1つ確認しながら必要に応じて変更してください。新規作成なのでもちろんオリジナルと違う設定にもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/20699be9-1995-8cfe-f2a6-c1d8eb76bf0c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/2a4847da-4b62-b580-7b7c-7eb04277d842.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8331e58c-41ac-3701-9758-22c89f694e1c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5fcd8ab7-a206-b4e8-563a-fa4e208a0e86.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/ceae6209-939e-32e2-e0ee-3e7704ea1294.png)

追加設定は必ずクリックしてセクションを表示し、DBパラメータグループには必ずIBM Customer Number(ICN)とIBMサイトID(サイト番号)をセットしたパラメーターグループ名をセットしたパラメータグループを設定してください。またその他のパラメーターを同じにしたい場合はリストア元と同じDBパラメータグループを設定するようにします。

タイムゾーンもデフォルトは`No preference`となりますので、必要に応じて変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/1f3d915d-bb93-a364-e33f-620f5fb77842.png)

設定が完了したら「DBインスタンスを復元」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/158eb5a4-e069-e8e8-3547-c56de683ce79.png)

#### 3.6  ステータスが「利用可能」になるまで待つ
データベースの一覧画面が表示されます。最初はステータスが「作成中」となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4ffebe8b-69c9-e51a-e446-e61c3efc78d3.png)

ステータスが「利用可能」になったらリストア完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/41423809-b380-ad53-53bf-19859307d1f0.png)

DBの新規作成 + リストアとなるので、少なくとも20分以上かかるようです。データ量に依存して長くなるかは未確認です。

# 4. ポイントインタイムリカバリ（特定の時点への DB インスタンスの復元）
参考: [特定の時点への DB インスタンスの復元](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_PIT.html)

「RDS 自動バックアップが設定」または 「DB インスタンスが AWS Backup のバックアッププランに関連付けられている場合」、そのバックアップを使用してポイントインタイムリカバリが可能です。
RDS は、DB インスタンスのトランザクションログを 5 分ごとに Amazon S3 にアップロードしています。アップロードされたトランザクションログを使用して復元するので、復元可能な直近の時間は最大で5分前となります。

スナップショットのリストアと同じく、新規DBを作成して復元します。

#### 4.1 Amazon RDS コンソール https://console.aws.amazon.com/rds/ より、ナビゲーションペインで、[データベース] を選択し、作成する DB インスタンスをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4e7a9341-5b65-db58-4f61-2faa5e8ca8be.png)


#### 4.2 右上の「アクション」から「特定の時点への復元」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e4460ab7-d290-47a6-654a-2ccdcfa057d3.png)


#### 4.3 「特定時点への復元」画面で復元時刻および必要事項を入力後、 一番下にある「特定時点への復元」をクリック

##### 復元時刻
「復元可能な最新時刻」 を選択してできるだけ最新の時点に復元するか、「カスタム日時」 を選択して時刻を選択します。

- 「復元可能な最新時刻」 には復元可能な最新時刻が表示されます。`UTC+9:00`と表示されていれば日本時間です

- 「カスタム日時」 を選択した場合、復元する日時を入力します。時間に`UTC+9:00`と表示されていれば日本時間での設定になります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4aa9cf40-6d0e-6387-dd70-73f2f1f0982b.png)

##### その他の項目

微妙に「スナップショットを復元」と設定できる項目が違いました。
以下デフォルトの画面を貼っておきます。
まずリストア先のDBインスタンス識別子を入力するのは「スナップショットを復元」と同じです。既存と同じ名前にはできません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/48a102bc-e0d5-4a0d-2584-2cd124ef392f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e84f9319-2e2c-52e0-7af3-eba80129c53d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/7793d55e-a5ec-06c6-d867-70e488be76b6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/6efc052b-9c15-a90b-cb4c-df4a6730978e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/30d58239-b926-88d4-7d5c-2c52d1455883.png)

「スナップショットを復元」と違って、データベース名が入力できますが、オリジナルから変更したくない場合は空欄にしておけば元と同じ名前になります。

「スナップショットを復元」と同様、DBパラメータグループには必ずIBM Customer Number(ICN)とIBMサイトID(サイト番号)をセットしたパラメーターグループ名をセットしたパラメータグループを設定してください。またその他のパラメーターを同じにしたい場合はリストア元と同じDBパラメータグループを設定するようにします。
タイムゾーンもデフォルトはNo preferenceとなりますので、必要に応じて変更します。

「スナップショットを復元」と違って、自動バックアップの有効化/無効化、バックアップウィンドウとメンテナンスウィンドウの設定が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b0b34473-b4a7-b0ca-5a50-e940e90b4132.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4b614e6e-ffec-754d-db77-8ce67ddd353e.png)

入力が完了したら一番下の「DBインスタンスを復元」をクリックします。


#### 4.4  ステータスが「利用可能」になるまで待つ
「[3.6 ステータスが「利用可能」になるまで待つ](#36--ステータスが利用可能になるまで待つ)」と同じです。

時間は
>所定のデータベースバックアップに適用されるトランザクションログのボリュームによっては、指定の時点まで復元する操作が完了するまでに数時間かかることがあります。

とのことです。

以上です。