クラウドエンジニアブログ

IaaS VM 上の SQL Database のバックアップ

椎熊 裕一

椎熊 裕一

はじめに

みなさん、こんにちは。
今回は Azure IaaS 上で構築した SQL Server のバックアップについてご紹介します。
Azure には PaaS 版の SQL Database も提供されていますが、要件によっては IaaS で構築しなくてはいけないケースや、まずはオンプレミス環境の構成をそのまま移行させたいケース等があるかと思います。
その際のバックアップの方式としてご参考にしていただければ幸いです。

バックアップの種類

Azure IaaS 上の SQL Server のバックアップの方式として下記3パターンがあります。

  1. VM の拡張機能を使用したバックアップ
    IaaS VM の拡張機能「SQL Server IaaS Agent 拡張機能」を使用して Azure Storage(Blob)にバックアップを取得します。
    リストアは Azure Storage 上で必要なバックアップを探し、SQL Server Management Studio(SSMS)または Transact-SQL コマンドを使用して復元します。
  2. Azure Backup を使用したバックアップ(パブリックプレビュー)
    IaaS VM の拡張機能「SQL Server IaaS Agent 拡張機能」と、Azure Backup を使用して、Services Recovery コンテナーにバックアップを取得します。
    リストアは、Azure Portal を使用して、復元します。
  3. 手動バックアップ
    Transact-SQL コマンドを使って、バックアップを取得します。取得場所は任意の場所(IaaS VM 上のローカルディスクや Azure Storage 等)を指定できます。
    リストアについても Transact-SQL コマンドを使って復元します。

今回は、まだパブリックプレビュー段階ですが、「2. Azure Backup を使用したバックアップ」の実装方法およびリストアについて試してみたいと思います。

下記の順で実施します。

  1. バックアップ格納場所の作成
  2. バックアップ ポリシーの作成
  3. バックアップの取得
  4. データベースのリストア

下記情報をもとに検証をしていきますので、ご一読していただくことをお勧めします。

  • Azure への SQL Server データベースのバックアップ
 https://docs.microsoft.com/ja-jp/azure/backup/backup-azure-sql-database

※ プレビュー段階ですので一般提供開始時に仕様等が変わることがございます。予めご了承ください。

前提条件

使用するにあたっての前提条件は下記のとおりです。

  • サポートされているオペレーティングシステム
    • Windows Server 2012
    • Windows Server 2012 R2
    • Windows Server 2016
  • サポートされている SQL Server のバージョン/エディション
    • SQL Server 2012 Enterprise、Standard、Web、Developer、Express
    • SQL Server 2014 Enterprise、Standard、Web、Developer、Express
    • SQL Server 2016 Enterprise、Standard、Web、Developer、Express
    • SQL Server 2017 Enterprise、Standard、Web、Developer、Express
  • VM に「SQL Server IaaS Agent 拡張機能」がインストールされていること
    ※ Azure Marketplace から作成された場合、VM 作成時に自動的にインストールされます。
  • VM と Recovery Services コンテナーが同じリージョンに構成されていること
  • VM から Azure Backup へ HTTP および HTTPS 通信ができること

   

仕組み

Azure Backup の仕組みは下記のとおりです。
仮想マシン上の Azure Backup エージェントを利用して、Azure Backup へ直接バックアップを送信することができます。

1.バックアップ格納場所の作成

前提条件を確認したら、実際に実装していきましょう。
まずはバックアップの格納場所を作成します。

[すべてのサービス] – [ストレージ] の中にある [Recovery Services コンテナー] を選択します。
※ Recovery で検索すると早いです。

 [Recovery Services コンテナー] を選択

[追加] を選択します。

[追加] を選択

任意の名前を入力し、基本情報を選択したら、[作成] を選択します。
これでバックアップの格納場所は作成完了です。

[作成] を選択
[作成] を選択

2.バックアップポリシーの作成

次にバックアップポリシーを作成してきましょう。
作成した Recovery Services コンテナーを選択します。

Recovery Services コンテナーを選択

[バックアップポリシー] – [追加]を選択します。

[バックアップ ポリシー] – [追加]を選択

今回は VM 内の SQL Server のバックアップを取得しますので、[Azure VM 内の SQL Server] を選択し、任意のポリシー名を入力します。

任意のポリシー名を入力

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

完全バックアップのスケジュールを指定

毎日完全バックアップを取得する想定ですので、差分バックアップは取得しません。

次にログバックアップの設定をします。
ログバックアップは最短の間隔である15分としました。

ログバックアップの設定

本検証時点では、[SQL バックアップの圧縮] を有効化するとバックアップが失敗しますので [無効化] にして[作成]を選択します。
※ 有効化すると、仮想マシン上の SQL Server にて圧縮オプションを使ってバックアップを取得するようです。
※ 正式リリース時には対応していることを願います。

[無効化] にして[作成]を選択

次に作成したバックアップポリシーを対象仮想マシンと関連付けの設定をします。
[バックアップポリシー] – [任意のバックアップポリシー] の […] を選択し、[関連付けられている項目] を選択します。

[関連付けられている項目] を選択

[追加] を選択します。

[追加] を選択

下記のとおり選択し、[検出の開始] を選択します。

[検出の開始] を選択

[仮想マシンの選択] 画面にて対象の仮想マシンを選択し、[データベースを検出] を選択します。
※ データベースの検出するためには仮想マシンおよび SQL Server を起動させておく必要があります。

[データベースを検出] を選択

すると、[デプロイを実行しています…] と表示されますので数分待ちます。
このデプロイにてバックアップに必要なサービスおよび設定を仮想マシンに対して実行しています。

[デプロイを実行しています…] と表示

デプロイに成功すると、仮想マシンに下記サービスが追加されます。

  • Azure Backup Workload Coordinator Service
  • Azure Backup Workload Inquiry Service
  • Azure Backup Workload Plugin Service

仮想マシンにサービスが追加

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

  • 名前:NT Service\AzureWLBackupPluginSvc
  • ロール:public, sysadmin

SQL Server にログインユーザーが追加

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

バックアップ対象とするデータベースを選択
[OK] を選択

[バックアップポリシーの選択] では先ほど作成したバックアップ ポリシーを選択し、[OK] を選択します。

バックアップ ポリシーを選択し、[OK] を選択

[バックアップの有効化] を選択します。
これでバックアップポリシーの作成は完了です。

[バックアップの有効化] を選択

3.バックアップの取得

バックアップの取得をしてみます。
[バックアップポリシー] – [任意のバックアップポリシー] の […] を選択し、[関連付けられている項目] を選択します。

[関連付けられている項目] を選択

関連付けられている項目として、バックアップ対象のデータベースが表示されます。
そして、右の方にバックアップの状態が確認できます。
バックアップポリシーの作成直後の状態としては、初回バックアップスケジュール待ちとなっているのがわかります。

初回バックアップスケジュール待ちとなっている

データベース毎にバックアップをすぐ取得することが可能です。
テスト用にバックアップを取得してみます。
取得したいデータベースの […] を選択し、[今すぐバックアップ] を選択します。

[今すぐバックアップ] を選択

[OK] を選択すると、バックアップが始まります。

[OK] を選択すると、バックアップが始まる

バックアップの進行状況は、[バックアップジョブ] から確認ができます。
[進行中] から [完了] となったらバックアップの完了です。
今回はほとんど空のデータベースのバックアップでしたが、所要時間は約3分でした。

バックアップの完了

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

現在のバックアップの状態を再度確認

4.データベースのリストア

バックアップが無事取得できましたので、正常にリストアできるか確認してみたいと思います。
今回は、Azure のリージョンをテストデータとして使っています。
バックアップ取得時点では、レコードが全体で30行かつ、15行目に [japaneast] が存在していることが確認できます。

[japaneast] が存在していることが確認できる

このデータベースから [japaneast] の行を削除します。
その結果、全体のレコード数が29行となり、15行目が [japanwest] になりましたね。

[japaneast] の行を削除

それではリストアをしてみましょう。
[バックアップポリシー] – [任意のバックアップポリシー] の […] を選択し、[関連付けられている項目] を選択します。リストアしたいデータベースを選択し、[DB の復元] を選択します。

[DB の復元] を選択

データベースの復元先として、[別の場所] もしくは [DB の上書き] を選択することができます。今回は元のデータベースに戻したいので、[DB の上書き] を選択し、[OK]を選択します。

[DB の上書き] を選択し、[OK]を選択

復元ポイントしては、前回完全バックアップを取得した時点に戻しますので、[完全および差分] を選択し、[OK] を選択します。

[完全および差分] を選択し


[OK] を選択

[NORECOVERY を使用して復元] は [無効] を選択し、[OK] を選択します。
※ NORECOVERY オプションは、まだリストアすべきバックアップがある場合に使用するオプションです。NORECOVERY を指定してリストアを行った場合は、データベースが「復旧中」(リストア中)となり、ユーザーからの接続を一切できないようにブロックします。

[NORECOVERY を使用して復元] は [無効] を選択

[復元] を選択すると、リストアが始まります。

[復元] を選択

リストアの進行状況は、バックアップ時と同様、[バックアップジョブ] から確認ができます。
[進行中] から [完了] となったらリストアの完了です。
リストアは約4分ほどかかりました。

リストアの完了

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

正常にリストアされましたね!

さいごに

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



次回予告
  • Azure Data Lake Analytics で簡単ビッグデータ分析



お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録