SynapseSQLプールのバックアップと復元をためしてみた

前回Synapse SQLプールのバックアップに関して調べた内容を記載しました。
[Synapse SQLプールのバックアップ](https://qiita.com/masahiro-yamaguchi/items/e2b723fb010c2a0ab632)

今回はこれを実際に試してみました。

#バックアップ対象
今回のバックアップ対象は`DataWH1`というSQLプールになります。
中にはテーブルが8テーブル作成されており、データが格納されております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/ddd3903d-b614-a351-6a2e-11089336c19c.png)

各テーブルに格納されている件数は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/bb830c3e-1b86-02c2-8ca2-a3d958ddb1e7.png)

#復元ポイントの確認
以下のコマンドを実行すれば直近の復元ポイントを確認出来ます。

```SQL
select  top 1 *
from     sys.pdw_loader_backup_runs
order by run_id desc;
```
結果は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/d19dd461-f420-4ad9-6b6c-a0e8a1989b19.png)

タイムスタンプはUTCなので日本時間で2020年9月7日 07:42頃に取得されている事を確認出来ます。

#バックアップの取得（復元ポイントの作成）
復元前に最新の状態のバックアップを取得しておくことにします。バックアップの取得、すなわち新しい復元ポイントの作成はAzure PotarlやPowerShellで作成することができます。今回はPowerShellで作成します。

```shell
Connect-AzAccount
Get-AzSubscription
Select-AzSubscription -SubscriptionName ＜対象のSynapse SQLプールが起動しているサブスクリプション名＞

New-AzSqlDatabaseRestorePoint -ResourceGroupName ＜リソースグループ名＞ -ServerName ＜サーバ名＞ -DatabaseName ＜SQLプール名＞ -RestorePointLabel ＜復元ポイントに設定する名前＞
```
※ちなみに＜サーバ名＞では`.database.windows.net`の部分は不要です。

取得が完了するとPowerShellでは以下のような出力があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/50334532-f1af-8ada-20ee-7c8e518c95d4.png)

もう一度SQLで最新の復元ポイントを確認すると、最新の復元ポイントが日本時間で2020年9月8日 10:37頃（表示されている時間+9時間）であることが確認出来ます。

```SQL
select  top 1 *
from     sys.pdw_loader_backup_runs
order by run_id desc;
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/21af2aa9-e226-818b-9dce-f18cb4389fd5.png)




#復元
`Azure Portal`→`Synapase Analytics(以前のSQL DW）`→`＜対象のSQLプール名＞（DataWH1）`の画面へ移動後、`復元`を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/dac7c78d-9a7a-7fc9-7077-d89df958be8d.png)

復元に必要な情報を入れていきます。
「復元ポイントの種類」では先ほど自分で取得したものを選択したいので、`ユーザ定義の復元ポイント`を選択。
「SQLプール名」には`DataWH2`を選択しました。**※すでに稼働中のSQLプール名は作成することができない事に注意が必要です。**
「復元ポイント」は先ほどPowerShellで取得した`TestManualPoint`を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/f50c90e3-0063-18c5-c781-f233247efee8.png)

復元に関する詳細な情報を確認し、問題なければ復元を行ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/7f333443-32f6-5bd9-b445-eaeaca2c82d8.png)

復元が始まりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/ca688657-7e8b-5d14-0fd2-3c0f91df4a35.png)


数分すると完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/a8f9626c-1ac5-6010-cb1c-62948d76fbaa.png)

#復元後の確認
今回同じSQL Database上にDataWH2という名前で復元を行いました。
接続すると、もともとあったDataWH1に追加してDataWH2という名前の新しいSynapase SQLプールを確認出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/c8c08de4-54c1-b2e9-4625-c9bf7667d899.png)

データベースの中にはDataWH1内にあった、8個のテーブルがしっかりと復元できている事が確認出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/863daa41-2097-45f8-9cdc-278fd001bf34.png)

さらに件数も一致していることが確認出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697647/6c7799de-fb54-569f-0445-ed2a73fb7ed2.png)

#最後に
流石にPaaSだけあって、バックアップや復元はとても簡単です。
一方で同一のSynapse SQLプール名で復元したい場合はどのようにすればいいのか今回の検証ではわからなかったので、また次の機会にでも確認してみたいと思います。