Azure VM での SQL Server Backup について

Azure Backup は、Azure 仮想マシン (VM) で実行されているSQL Serverをバックアップするためのストリームベースの特殊なソリューションを提供します。 このソリューションは、ゼロインフラストラクチャ バックアップ、長期間保存、中央管理といった Azure Backup の長所と足並みをそろえるものです。 さらに、SQL Server だけには次の長所があります。

  • 完全、差分、ログという全種類のバックアップに対応するワークロード対応バックアップ
  • 15 分間の RPO (回復ポイントの目標) と頻繁に行われるログのバックアップ
  • 特定の時点に復旧 (1 秒まで)
  • 個々のデータベース レベルのバックアップと復元

Azure Backupは、現在プレビュー段階にあるAzure VM 内のSQL Server インスタンスのスナップショット ベースのバックアップを提供するようになりました。 スナップショット ベースのバックアップを使用すると、パフォーマンスが向上した大規模なデータベースを保護し、インスタント 復旧レベルからの復元を高速化できます。 Azure の最新の製品の機能強化と機能更新プログラムについては、 Microsoft Azure の更新プログラムに関するページを参照してください。

現在サポートされているバックアップと復元のシナリオを確認するには、サポート マトリックスを参照してください。 よく寄せられる質問については、 よく寄せられる質問を参照してください。

Azure VM の SQL インスタンスのスナップショット バックアップ (プレビュー)

Azure Backupは、大規模なデータベースのパフォーマンスを向上させるスナップショット ベースの SQL バックアップ ソリューションを提供します。 ディスク スナップショットを使用して高速復元と頻繁なログ バックアップを行い、データ損失を最小限に抑え、目標復旧時間 (RTO) の短縮と目標復旧ポイント (RPO) の向上に役立ちます。

SQL Server インスタンスのスナップショット バックアップはプレビューで利用できます。 スナップショット ベースのバックアップを使用すると、パフォーマンスが向上した大規模なデータベースを保護し、インスタント 復旧レベルからの復元を高速化できます。

スナップショット バックアップには、大規模なデータベースをバックアップする際に次の利点があります。

  • インスタンス レベルのスナップショット: SQL インスタンス レベルでスナップショット バックアップを作成し、1 回の操作で複数のデータベースを選択します。 必要に応じて、インスタンス全体または個々のデータベースを復元します。

  • ソース サーバーへの影響は最小限: Azure Backup は、アプリケーション整合性スナップショットを取得するために、データベースを短時間だけ静止状態にします。 データベースは数秒間だけ休止されますが、操作レベルでのスナップショットの作成と可用性は数分で完了します。 ストリーミング バックアップとは異なり、ソース マシンのリソースは長期間使用されません。

  • コスト効率: 増分スナップショットを使用してストレージ コストを最適化します。

  • RTO の改善: インスタント/運用レベルからの高速復元を使用します。

  • 低 RPO: ログ バックアップとスナップショットを組み合わせて、より低い RPO を実現し、ポイントインタイム リストアを有効にします。

サポート マトリックスのスナップショットを使用した SQL バックアップでサポートされるシナリオと制限事項について説明します。 Azure ポータルを使用して Azure VM 上の SQL Server インスタンスのスナップショットをバックアップするには、こちらの記事を参照してください。

SQL Server データベースのバックアップ プロセス

このソリューションでは、SQL ネイティブ API を使用して SQL データベースのバックアップを作成します。

  • 保護するSQL Server VM を指定し、その中のデータベースに対してクエリを実行すると、Azure Backup サービスによって、AzureBackupWindowsWorkload 拡張機能という名前のワークロード バックアップ拡張機能が VM にインストールされます。

  • この拡張機能は、コーディネーターと SQL プラグインで構成されています。 コーディネーターは、バックアップ、バックアップ、復元の構成などのさまざまな操作のワークフローをトリガーする役割を担いますが、プラグインは実際のデータ フローを担当します。

  • この VM 上のデータベースを検出できるようにするために、Azure Backup により、アカウント NT SERVICE\AzureWLBackupPluginSvc が作成されます。 このアカウントはバックアップと復元に使用され、SQL sysadmin アクセス許可を必要とします。 NT SERVICE\AzureWLBackupPluginSvc アカウントは仮想サービス アカウントであるため、パスワードの管理は不要です。 Azure Backup では、データベースの検出と照会に NT AUTHORITY\SYSTEM アカウントが使用されます。そのため、このアカウントは SQL 上でパブリック ログインである必要があります。 SQL Server VM を Azure Marketplace から作成しなかった場合、エラー UserErrorSQLNoSysadminMembership が発生する可能性があります。 エラー メッセージが表示されたら、 次の手順に従います

  • 選択したデータベースに対して保護の構成をトリガーすると、バックアップ サービスにより、コーディネーターに対してバックアップ スケジュールとその他のポリシーの詳細が設定されます。これにより、拡張機能が VM 内にローカルにキャッシュされます。

  • スケジュールされた時刻に、コーディネーターはプラグインと通信し、VDI (仮想デバイス インターフェイス) を使用して SQL サーバーからバックアップ データのストリーミングを開始します。

  • プラグインは Recovery Services コンテナーに直接データを送信するため、ステージングの場所が必要ありません。 Azure Backup サービスは、データを暗号化し、ストレージ アカウントに格納します。

  • データ転送が完了すると、コーディネーターはバックアップ サービスを使用してコミットを確認します。

    SQL のバックアップ アーキテクチャ

SQL Server インスタンス スナップショットのバックアップ プロセス

Azure Backupでは、マネージド ディスクの増分スナップショットを使用して、Azure VM 内の SQL データベースを保護します。 バックアップ ポリシーは、スナップショットの作成、保持、ログのバックアップ動作を制御して、高速復元と特定時点の復旧を可能にします。

バックアップと復元のフローでは、次の操作を含む、Azure Backupによって実行される論理的なエンド ツー エンドの操作シーケンスの概要を示します。

  • ユーザー定義のバックアップ ポリシーに基づいて、マネージド ディスクの増分スナップショットを作成します。 現在、Azure Backup サービスでは、6 時間以上ごとに 1 つのスナップショットがサポートされています。 ログ バックアップは、15 分以上ごとに構成できます。

  • SQL インスタンス レベルでスナップショット バックアップを取得します。 スナップショット操作ごとに最大 12 個のデータベースを選択できます。

  • 結合されたデータベース セットの基になるディスクをスナップすることで、選択したすべてのデータベースのアプリケーション整合性スナップショットをキャプチャします。

  • 指定したリソース グループ内のAzure サブスクリプションのスナップショットを、ユーザー定義の期間 (最大 7 日間) 保持します。 その後Azure Backup、構成されたポリシーに基づいて、長期保有のためのコンテナー化されたバックアップとしてデータを Recovery Services コンテナーに移動します。

  • データベース レベルでログ バックアップをボールトにストリーミング配信します。 復元中、サービスはスナップショットを代替 VM に復元し、ログ バックアップを適用して特定の時点の復旧を実現します。

Azure ポータル (プレビュー) を使用して、Azure VM でインスタンス スナップショットSQL Serverバックアップする方法について説明します。

SQL Server バックアップの前提条件

SQL Server バックアップを開始する前に、次の前提条件を確認してください。

  1. Azure で SQL Server インスタンスを稼働させていることを確認する。 マーケットプレースで SQL Server インスタンスをすばやく作成できます。
  2. 機能に関する考慮事項シナリオのサポートを確認する。
  3. このシナリオに関する一般的な質問を確認する。

VM のアクセス許可を設定する

SQL Serverで検出を実行すると、Azure Backupは次のアクションを実行します。

  • AzureBackupWindowsWorkload 拡張機能を追加します。
  • 仮想マシン上のデータベースを検出するために、NT SERVICE\AzureWLBackupPluginSvc アカウントが作成されます。 このアカウントはバックアップと復元に使用され、SQL sysadmin アクセス許可を必要とします。
  • VM 上で実行されているデータベースを検出します。Azure Backup は NT AUTHORITY\SYSTEM アカウントを使用します。 このアカウントは SQL でのパブリック サインインである必要があります。

Azure Marketplace で SQL Server VM を作成しなかった場合、または SQL 2008 または 2008 R2 を使用している場合、UserErrorSQLNoSysadminMembership エラーが発生する可能性があります。

Windows 2008 R2 で実行されている SQL 2008 および 2008 R2 へのアクセス許可を付与する方法については、このセクションを参照してください。

その他のすべてのバージョンでは、次の手順を使用してアクセス許可を割り当てます。

  1. SQL Server sysadmin アクセス許可を持つアカウントを使用して、SQL Server Management Studio (SSMS) にサインインします。 特殊な権限が必要でない限り、Windows 認証が機能するはずです。

  2. SQL Serverで、Security/Logins フォルダーを開きます。

    セキュリティ/ログイン フォルダーを開いてアカウントを表示する

  3. [ログイン] フォルダーを右クリックし、 [新しいログイン] を選択します。 [ログイン - 新規作成][検索] を選択します。

    [ログイン - 新規作成] ダイアログ ボックスで [検索] を選択する

  4. Windows 仮想サービス アカウント NT SERVICE\AzureWLBackupPluginSvc は、仮想マシンの登録と SQL 検出フェーズ中に作成済みです。 [選択するオブジェクト名を入力します] に示されているようにアカウント名を入力します。 [名前の確認] を選択して名前解決を行います。 [OK] を選択します。

    [名前の確認] を選択して不明なサービス名を解決する

  5. サーバー ロールで、sysadmin ロールが選択されていることを確認します。 [OK] を選択します。 この時点で、必要な権限が揃っているはずです。

    sysadmin サーバー ロールが選択されていることを確認する

    SQL Server インスタンスが Always-On 可用性グループ (AG) の一部である場合は、 NT AUTHORITY\SYSTEM アカウントで VIEW SERVER STATE 権限が有効になっていることを確認します。

    バックアップ用に選択された SQL サーバー インスタンスに対するアクセス許可を確認する方法を示すスクリーンショット。

  6. 次にデータベースを Recovery Services コンテナーと関連付けます。 Azure portal の [保護されたサーバー] 一覧で、エラー状態にあるサーバーを右クリックし、> を選択します。

    サーバーに適切な権限があることを確認する

  7. [通知] 領域で進行状況をチェックします。 選択したデータベースが検出されたら、成功のメッセージが表示されます。

    デプロイの成功メッセージ

SQL Server に SQL Server の複数のインスタンスがインストールされている場合は、すべての SQL インスタンスに NT Service\AzureWLBackupPluginSvc アカウントに対する sysadmin アクセス許可を追加する必要があります。

SQL 2008 および SQL 2008 R2 の SQL sysadmin アクセス許可を割り当てる

NT AUTHORITY\SYSTEM および NT Service\AzureWLBackupPluginSvc ログインを SQL Server インスタンスに追加するには、次の手順に従います。

  1. オブジェクト エクスプローラーで SQL Server Instance に移動します。

  2. [セキュリティ>Logins] に移動します。

  3. [ログイン] を右クリックし、New Login using SSMS[新しいログイン] を選択します

  4. [ 全般 ] タブに移動し、ログイン名として 「NT AUTHORITY\SYSTEM 」と入力します。

    SSMS のログイン名

  5. [ サーバー ロール ] タブに移動し、 パブリック ロールと sysadmin ロールを選択します。

    SSMS でのロールの選択

  6. [状態] に移動し、データベース エンジンに接続するためのアクセス許可として [許可] を選択し、[ログイン対して有効] を選択します。

    SSMS でのアクセス許可の付与

  7. [OK] を選択します。

  8. NT Service\AzureWLBackupPluginSvc ログインを SQL Server インスタンスに追加するには、手順 1 から 7 を繰り返します。

    ログインが既に存在する場合は、sysadmin サーバー ロールがあることを確認し、[状態] の下にデータベース エンジンに接続するためのアクセス許可有効としてログインするための許可オプションがあることを確認します。

  9. アクセス許可を付与した後、Azure portal で Recovery Services コンテナー>>> に移動し、DB を再検出します。

    Azure portal での DB の再検出

または、管理者モードで次のコマンドレットを実行して、アクセス許可の割り当てを自動化することもできます。

インスタンス名は、既定では MSSQLSERVER に設定されます。 必要に応じて、スクリプトでインスタンス名引数を変更します。

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it's the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

Azure VM 内のSQL Server インスタンスのスナップショット バックアップの価格

AZURE VM スナップショットでの SQL のバックアップには、次の料金が発生します。

  • Recovery Services コンテナーに格納されているスナップショット バックアップの価格は、Azure Backup の価格に基づいています。

  • 保護されたインスタンスの料金とコンテナーストレージのコストに加えて、Azure Backupには、運用レベルのスナップショット ストレージに対する追加料金が発生します。

  • マネージド ディスク スナップショットでは、サブスクリプションに保持されている期間の マネージド ディスク スナップショットの価格 に基づいて料金が発生します。

次のステップ