みなさん、こんにちは。
今回は Azure IaaS 上で構築した SQL Server のバックアップについてご紹介します。
Azure には PaaS 版の SQL Database も提供されていますが、要件によっては IaaS で構築しなくてはいけないケースや、まずはオンプレミス環境の構成をそのまま移行させたいケース等があるかと思います。
その際のバックアップの方式としてご参考にしていただければ幸いです。
Azure IaaS 上の SQL Server のバックアップの方式として下記3パターンがあります。
今回は、まだパブリックプレビュー段階ですが、「2. Azure Backup を使用したバックアップ」の実装方法およびリストアについて試してみたいと思います。
下記の順で実施します。
下記情報をもとに検証をしていきますので、ご一読していただくことをお勧めします。
※ プレビュー段階ですので一般提供開始時に仕様等が変わることがございます。予めご了承ください。
使用するにあたっての前提条件は下記のとおりです。
Azure Backup の仕組みは下記のとおりです。
仮想マシン上の Azure Backup エージェントを利用して、Azure Backup へ直接バックアップを送信することができます。

前提条件を確認したら、実際に実装していきましょう。
まずはバックアップの格納場所を作成します。
[すべてのサービス] – [ストレージ] の中にある [Recovery Services コンテナー] を選択します。
※ Recovery で検索すると早いです。
![[Recovery Services コンテナー] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg02.png)
[追加] を選択します。
![[追加] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg03.png)
任意の名前を入力し、基本情報を選択したら、[作成] を選択します。
これでバックアップの格納場所は作成完了です。
![[作成] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg04.png)
![[作成] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg05.png)
次にバックアップポリシーを作成してきましょう。
作成した Recovery Services コンテナーを選択します。

[バックアップポリシー] – [追加]を選択します。
![[バックアップ ポリシー] – [追加]を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg07.png)
今回は VM 内の SQL Server のバックアップを取得しますので、[Azure VM 内の SQL Server] を選択し、任意のポリシー名を入力します。

[完全バックアップ] を選択し、完全バックアップのスケジュールを指定します。
今回は [毎日:22:00] に完全バックアップを取得するように設定しました。

毎日完全バックアップを取得する想定ですので、差分バックアップは取得しません。
次にログバックアップの設定をします。
ログバックアップは最短の間隔である15分としました。

本検証時点では、[SQL バックアップの圧縮] を有効化するとバックアップが失敗しますので [無効化] にして[作成]を選択します。
※ 有効化すると、仮想マシン上の SQL Server にて圧縮オプションを使ってバックアップを取得するようです。
※ 正式リリース時には対応していることを願います。
![[無効化] にして[作成]を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg11.png)
次に作成したバックアップポリシーを対象仮想マシンと関連付けの設定をします。
[バックアップポリシー] – [任意のバックアップポリシー] の […] を選択し、[関連付けられている項目] を選択します。
![[関連付けられている項目] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg12.png)
[追加] を選択します。
![[追加] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg13.png)
下記のとおり選択し、[検出の開始] を選択します。
![[検出の開始] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg14.png)
[仮想マシンの選択] 画面にて対象の仮想マシンを選択し、[データベースを検出] を選択します。
※ データベースの検出するためには仮想マシンおよび SQL Server を起動させておく必要があります。
![[データベースを検出] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg15.png)
すると、[デプロイを実行しています…] と表示されますので数分待ちます。
このデプロイにてバックアップに必要なサービスおよび設定を仮想マシンに対して実行しています。
![[デプロイを実行しています…] と表示](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg16.png)
デプロイに成功すると、仮想マシンに下記サービスが追加されます。

また、SQL Server に下記ログインユーザーが追加されます。

データベースの検出が完了したら、バックアップ対象とするデータベースを選択し、下部の [OK] を選択します。

![[OK] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg20.png)
[バックアップポリシーの選択] では先ほど作成したバックアップ ポリシーを選択し、[OK] を選択します。
![バックアップ ポリシーを選択し、[OK] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg21.png)
[バックアップの有効化] を選択します。
これでバックアップポリシーの作成は完了です。
![[バックアップの有効化] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg22.png)
バックアップの取得をしてみます。
 [バックアップポリシー] – [任意のバックアップポリシー] の […] を選択し、[関連付けられている項目] を選択します。
![[関連付けられている項目] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg23.png)
関連付けられている項目として、バックアップ対象のデータベースが表示されます。
そして、右の方にバックアップの状態が確認できます。
バックアップポリシーの作成直後の状態としては、初回バックアップスケジュール待ちとなっているのがわかります。

データベース毎にバックアップをすぐ取得することが可能です。
テスト用にバックアップを取得してみます。
取得したいデータベースの […] を選択し、[今すぐバックアップ] を選択します。
![[今すぐバックアップ] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg25.png)
[OK] を選択すると、バックアップが始まります。
![[OK] を選択すると、バックアップが始まる](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg26.png)
バックアップの進行状況は、[バックアップジョブ] から確認ができます。
[進行中] から [完了] となったらバックアップの完了です。
今回はほとんど空のデータベースのバックアップでしたが、所要時間は約3分でした。

[バックアップポリシー] – [任意のバックアップポリシー] の […] を選択し、[関連付けられている項目] を選択する。対象のデータベースを選択し、現在のバックアップの状態を再度確認してみます。
最初の復元ポイントが初回バックアップの完了時間となっているはずです。

バックアップが無事取得できましたので、正常にリストアできるか確認してみたいと思います。
今回は、Azure のリージョンをテストデータとして使っています。
バックアップ取得時点では、レコードが全体で30行かつ、15行目に [japaneast] が存在していることが確認できます。
![[japaneast] が存在していることが確認できる](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg29.png)
このデータベースから [japaneast] の行を削除します。
その結果、全体のレコード数が29行となり、15行目が [japanwest] になりましたね。
![[japaneast] の行を削除](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg30.png)
それではリストアをしてみましょう。
[バックアップポリシー] – [任意のバックアップポリシー] の […] を選択し、[関連付けられている項目] を選択します。リストアしたいデータベースを選択し、[DB の復元] を選択します。
![[DB の復元] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg31.png)
データベースの復元先として、[別の場所] もしくは [DB の上書き] を選択することができます。今回は元のデータベースに戻したいので、[DB の上書き] を選択し、[OK]を選択します。
![[DB の上書き] を選択し、[OK]を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg32.png)
復元ポイントしては、前回完全バックアップを取得した時点に戻しますので、[完全および差分] を選択し、[OK] を選択します。
![[完全および差分] を選択し](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg33.png)
![[OK] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg34.png)
[NORECOVERY を使用して復元] は [無効] を選択し、[OK] を選択します。
※ NORECOVERY オプションは、まだリストアすべきバックアップがある場合に使用するオプションです。NORECOVERY を指定してリストアを行った場合は、データベースが「復旧中」(リストア中)となり、ユーザーからの接続を一切できないようにブロックします。
![[NORECOVERY を使用して復元] は [無効] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg35.png)
[復元] を選択すると、リストアが始まります。
![[復元] を選択](/-/Media/SMC/special/blog/ms-azure_blog/2018/0068/dg36.png)
リストアの進行状況は、バックアップ時と同様、[バックアップジョブ] から確認ができます。
[進行中] から [完了] となったらリストアの完了です。
リストアは約4分ほどかかりました。

リストア完了後、クエリを投げてみると、、、

正常にリストアされましたね!
今回は、Azure Backup を使用した SQL Server のバックアップ・リストアをご紹介しました。
従来であればバックアップサーバーを構築して、クライアントにエージェントをインストールして…、等の大掛かりで手間のかかる準備が必要でしたが、Azure の場合、Azure Portal から簡単にバックアップを構成することができます。
システムを利用していく上で重要なバックアップを早く・簡単に調達することができますので、ぜひ利用してみてください。