SQL Server 2014 仮想マシンの自動バックアップ (Resource Manager)

適用対象:Azure VM 上の SQL Server

自動バックアップでは、SQL Server 2014 Standard または Enterprise を実行する Azure VM 上の既存のデータベースと新しいデータベースのすべてを対象に、 Microsoft Azure へのマネージド バックアップ が自動的に構成されます。 これにより、日常的なデータベースのバックアップで永続的な Azure BLOB ストレージを利用するように構成できます。 自動バックアップは、SQL Server IaaS (サービスとしてのインフラストラクチャ) Agent 拡張機能に依存します。

Note

Azure には、リソースの作成と操作に使用できる、Azure Resource Manager およびクラシックという 2 つの異なるデプロイ モデルがあります。 この記事では、Resource Manager デプロイ モデルの使用について説明します。 新しいデプロイには、クラシック デプロイ モデルではなく、Resource Manager デプロイ モデルをお勧めします。

前提条件

自動バックアップを使用するには、次の前提条件を検討してください。

[オペレーティング システム] :

  • Windows Server 2012 以降

SQL Server バージョン/エディション:

  • SQL Server 2014 Standard
  • SQL Server 2014 Enterprise

注意

SQL 2016 以降については、SQL Server 2016 の自動バックアップに関するページを参照してください。

データベースの構成:

  • ターゲット "ユーザー" データベースでは、完全復旧モデルを使用する必要があります。 システム データベースでは、完全復旧モデルを使用する必要はありません。 しかし、model または msdb のログのバックアップの作成を必要とする場合は、完全復旧モデルを使用する必要があります。 バックアップに対する完全復旧モデルの影響の詳細については、「完全復旧モデルでのバックアップ」を参照してください。
  • SQL Server VM は SQL IaaS Agent 拡張機能に登録されており、自動バックアップ機能が有効になっています。 自動バックアップは拡張機能に依存するため、自動バックアップは、既定のインスタンスまたは単一の名前付きインスタンスからのターゲット データベースでのみサポートされます。 既定のインスタンスがなく、複数の名前付きインスタンスがある場合、SQL IaaS Agent 拡張機能は失敗し、自動バックアップは行われません。

設定

自動バックアップで構成できるオプションを次の表に示します。 実際の構成手順は、Azure ポータルと Azure Windows PowerShell コマンドのどちらを使用するかによって異なります。 自動バックアップでは既定でバックアップ圧縮が使用され、無効にできないことにご留意ください。

設定 範囲 (既定値) 説明
自動化されたバックアップ 有効/無効 (無効) SQL Server 2014 Standard または Enterprise を実行している Azure VM で、自動バックアップを有効または無効にします。
保有期間 1 から 90 日 (90 日) バックアップを保持する日数。
ストレージ アカウント Azure ストレージ アカウント 自動バックアップのファイルを BLOB ストレージに保存するために使用する Azure ストレージ アカウント。 この場所にコンテナーが作成され、すべてのバックアップ ファイルが保存されます。 バックアップ ファイルの名前付け規則には、日付、時刻、およびコンピューター名が含まれます。
暗号化 有効/無効 (無効) バックアップ暗号化を有効または無効にします。 バックアップ暗号化を有効にすると、バックアップの復元に使用する証明書は、指定されたストレージ アカウントの同じ automaticbackup コンテナー内に、同じ名前付け規則を使用して配置されます。 パスワードが変更された場合、そのパスワードを使用して新しい証明書が生成されますが、以前のバックアップの復元には古い証明書が引き続き使用されます。
パスワード パスワード テキスト 暗号化キーのパスワード。 暗号化を有効にした場合にのみ必須となります。 暗号化されたバックアップを復元するには、バックアップの作成時に使用した正しいパスワードおよび関連する証明書が必要です。

新しい VM を構成する

Resource Manager デプロイ モデルで新しい SQL Server 2014 Virtual Machine を作成するときに自動バックアップを構成するには、Azure portal を使用します。

[SQL Server 設定] タブで下にスクロールして [自動バックアップ] を見つけ、 [有効にする] を選択します。 次の Azure Portal のスクリーンショットは、SQL Automated Backup の設定を示しています。

Azure portal での SQL 自動バックアップ構成のスクリーンショット

既存の VM を構成する

既存の SQL Server 仮想マシンの場合、Azure portal から自動バックアップを有効または無効にしたり、保有期間を変更したり、ストレージ アカウントを指定したり、暗号化を有効にしたりすることができます。

SQL Server 2014 仮想マシン用の SQL 仮想マシンのリソースに移動し、 [バックアップ] を選択します。

既存の VM の SQL 自動バックアップのスクリーンショット

完了したら、 [バックアップ] ページの下にある [適用] ボタンを選択して変更内容を保存します。

自動バックアップを初めて有効にすると、バックグラウンドで SQL Server IaaS エージェントが構成されます。 この間、自動バックアップが構成されていることは、Azure ポータルに示されない可能性があります。 エージェントがインストールされ、構成されるまで数分待ちます。 その後、Azure ポータルに新しい設定が反映されます。

注意

テンプレートを使用して自動バックアップを構成することもできます。 詳細については、 自動バックアップ用の Azure クイックスタート テンプレートに関するページをご覧ください。

PowerShell での構成

PowerShell を使用して自動バックアップを構成できます。 開始する前に、次の操作を行う必要があります。

Note

この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

現在の設定の確認

プロビジョニング中に自動バックアップを有効にすると、PowerShell を使って現在の構成を確認することができます。 Get-AzVMSqlServerExtension コマンドを実行して AutoBackupSettings プロパティを調べます。

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"

(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings

次のような出力が表示されます。

Enable                      : False
EnableEncryption            : False
RetentionPeriod             : -1
StorageUrl                  : NOTSET
StorageAccessKey            : 
Password                    : 
BackupSystemDbs             : False
BackupScheduleType          : 
FullBackupFrequency         : 
FullBackupStartTime         : 
FullBackupWindowHours       : 
LogBackupFrequency          : 

出力で [有効]False に設定されていると表示される場合は、自動バックアップを有効にする必要があります。 自動バックアップは同じ方法で有効にし、構成できます。 詳細については、次のセクションを参照してください。

Note

変更直後に設定を確認すると、以前の構成値が表示されることがあります。 変更が適用されていることを確認するには、数分経ってから設定を再び確認します。

自動バックアップの構成

PowerShell を使用すると、自動バックアップを有効にできるほか、自動バックアップの構成や動作をいつでも変更することができます。

最初に、バックアップ ファイル用のストレージ アカウントを選択または作成します。 次のスクリプトでは、ストレージ アカウントを選択し、ストレージ アカウントが存在しない場合は作成します。

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

Note

自動バックアップでは Premium Storage でのバックアップの保存をサポートしていませんが、Premium Storage を使用する VM ディスクからバックアップを取ることができます。

バックアップ用のストレージ アカウントでカスタム コンテナーを使用する場合は、次のスクリプトを使用してコンテナーをチェックするか、存在しない場合はコンテナーを作成します。

$storage_container = "backupcontainer"

New-AzStorageContainer -Name $storage_container -Context $storage.Context

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

次のスクリプトを使用して、ストレージ アカウントのアクセス キーを取得します。

$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

次に Update-AzSqlVM コマンドを使って、Azure ストレージ アカウントにバックアップを保存するように、自動バックアップを有効にして設定を構成します。 この例では、バックアップは 10 日間保持されるよう設定されています。

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingStorageContainerName $storage_container 

SQL Server IaaS エージェントのインストールと構成には数分かかる場合があります。

Note

SQL Server 2016 と自動バックアップのみに適用される、Update-AzSqlVM* のその他の設定があります。 SQL Server 2014 では、-AutoBackupSettingBackupSystemDb-AutoBackupSettingBackupScheduleType-AutoBackupSettingFullBackupFrequency-AutoBackupSettingFullBackupStartTime-AutoBackupSettingFullBackupWindowHour、および-AutoBackupSettingLogBackupFrequency の設定はサポートされていません。 これらの設定を SQL Server 2014 仮想マシンで構成しようとした場合、エラーは発生しませんが、設定は適用されません。 これらの設定を SQL Server 2016 仮想マシンで使用したい場合は、「SQL Server 2016 Azure 仮想マシンの自動バックアップ」を参照してください。

暗号化を有効にするには、-AutoBackupSettingEnableEncryption パラメーターと、-AutoBackupSettingPassword パラメーターのパスワード (セキュリティで保護された文字列) を渡すように、前のスクリプトを変更します。 次のスクリプトでは、前の例の自動バックアップ設定を有効にし、暗号化を追加します。

$password = "r@ndom Va1ue"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force  

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod 10 `
-AutoBackupSettingEnableEncryption `
-AutoBackupSettingPassword $encryptionpassword `
-AutoBackupSettingStorageContainerName $storage_container 

設定が適用されたことを確認するには、自動バックアップの構成を確認します

自動バックアップを無効にする

自動バックアップを無効にするには、Update-AzSqlVM コマンド内で -AutoBackupSettingEnable パラメーターを $false に設定して同じスクリプトを実行します。 値を $false に設定するとその機能は無効化されます。 インストールと同様に、自動バックアップの無効化には数分かかる場合があります。

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable:$false

サンプル スクリプト

次のスクリプトでは、お使いの VM で自動バックアップを有効にして構成するようカスタマイズできる変数のセットを提供しています。 場合によっては、要件に基づきスクリプトをカスタマイズする必要があるかもしれません。 たとえば、システム データベースのバックアップを無効にしたり、暗号化を有効にする場合は変更が必要です。

$vmname = "yourvmname"
$resourcegroupname = "yourresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.windows.net/"
$retentionperiod = 10

# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension

Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region

# Creates/use a storage account to store the backups

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

# Creates/uses a custom storage account container

$storage_container = "yourbackupcontainer"

if (!(Get-AzStorageAccount -StorageAccountName $storage_accountname -ResourceGroupName $resourcegroupname | Get-AzStorageContainer | Where-Object { $_.Name -eq $storage_container })){ `
	New-AzStorageContainer -Name $storage_container -Context $storage.Context `
} `
 else `
{ `
	Write-Warning "Container $storage_container already exists." `
}

# Get storage account access key
$accesskey = (Get-AzStorageAccountKey -ResourceGroupName $resourcegroupname  -Name $storage_accountname)[0].value

# Configure Automated Backup settings

Update-AzSqlVM -ResourceGroupName $resourcegroupname -Name $vmname -AutoBackupSettingEnable `
-AutoBackupSettingStorageAccessKey $accesskey `
-AutoBackupSettingStorageAccountUrl $storage_url `
-AutoBackupSettingRetentionPeriod $retentionperiod `
-AutoBackupSettingStorageContainerName $storage_container 

暗号化証明書を使用したバックアップをする

バックアップを暗号化する場合は、暗号化証明書が生成され、バックアップと同じストレージ アカウントに保存されます。 このシナリオでは、バックアップの暗号化と暗号化解除に用いられる暗号化証明書を保護するために使用されるパスワードも入力する必要があります。 これにより、この機能の構成の範囲を超えたバックアップについて心配する必要はありません。また、バックアップがセキュリティで保護されていることを信頼できます。

バックアップ暗号化が有効になっている場合は、データベースの復元性を確保するために、暗号化証明書が正常に作成およびアップロードされたかどうかを確かめることを強くお勧めします。 これを行うには、データベースをすぐに作成し、暗号化証明書とデータを新しく作成されたコンテナーに適切にバックアップされたことを確認します。 これにより、すべてが正しく構成され、異常が発生しなかったことが示されます。

何らかの理由で証明書のアップロードに失敗した場合は、証明書マネージャーを使用して証明書をエクスポートして保存できます。 ただし、同じ VM に保存する必要はありません。これは、VM がダウンしているときに確実に証明書にアクセスできないようにするためです。 自動バックアップ構成を変更または作成した後に証明書が適切にバックアップされたかどうかを確認するには、VM のイベント ログをチェックし、バックアップが失敗した場合は、こちらのエラー メッセージが表示されます:

VM のイベント ログに表示されるエラー メッセージのスクリーンショット。

証明書が正しくバックアップされている場合は、イベント ログに次のメッセージが表示されます:

イベント ログでの暗号化証明書のバックアップが成功したスクリーンショット。

一般的な方法として、バックアップが正常かどうかを随時チェックすることをお勧めします。 バックアップを復元できるようにするには、次の操作を行う必要があります:

  1. 暗号化証明書がバックアップされており、パスワードを覚えていることを確認します。 これを行わないと、バックアップの暗号化を解除して復元することはできません。 何らかの理由で証明書が適切にバックアップされていない場合は、次の T-SQL クエリを実行して手動でこれを行うことができます:

    BACKUP MASTER KEY TO FILE = <file_path> ENCRYPTION BY PASSWORD = <password>
    BACKUP CERTIFICATE [AutoBackup_Certificate] TO FILE = <file_path> WITH PRIVATE KEY (FILE = <file_path>, ENCRYPTION BY PASSWORD = <password>)
    
  2. バックアップ ファイルが少なくとも 1 個の完全バックアップでアップロードされていることを確認します。 間違いが発生するため、VM を削除する前に、または VM が破損した場合に備えて、常に少なくとも 1 個は完全バックアップがあることを確認する必要があります。そうすればデータに引き続きアクセスできます。 VM のデータ ディスクを削除する前に、ストレージ内のバックアップが安全かつ回復可能であることを確認する必要があります。

監視

SQL Server 2014 での Automated Backup の監視には、大きく 2 つの選択肢があります。 自動バックアップでは SQL Server マネージド バックアップ機能を使用するため、この両方に同じ監視手法が適用されます。

最初に msdb.smart_admin.sp_get_backup_diagnostics を呼び出すことによって状態をポーリングできます。 あるいはmsdb.smart_admin.fn_get_health_status テーブル値関数でクエリを実行します。

注意

SQL Server 2014 における Managed Backup のスキーマは msdb.smart_admin です。 SQL Server 2016 では、このスキーマは msdb.managed_backup になっており、リファレンスのトピックでは、この新しいスキーマが使用されています。 ただし、SQL Server 2014 の場合は、すべての Managed Backup オブジェクトに対して引き続き smart_admin スキーマを利用する必要があります。

もう 1 つのオプションは、通知に組み込みのデータベース メール機能を利用する方法です。

  1. msdb.smart_admin.sp_set_parameter ストアド プロシージャを呼び出して、SSMBackup2WANotificationEmailIds パラメーターに電子メール アドレスを設定します。
  2. SendGrid が Azure VM から電子メールを送信できるようにします。
  3. SMTP サーバーとユーザー名を使用してデータベース メールを構成します。 データベース メールは、SQL Server Management Studio または Transact-SQL コマンドで構成できます。 詳細については、「データベース メール」を参照してください。
  4. データベース メールを使用するように SQL Server エージェントを構成します
  5. SMTP ポートがローカルの VM ファイアウォールと、その VM のネットワーク セキュリティ グループの両方で許可されていることを確認します。

次のステップ

自動バックアップでは、Azure VM でマネージド バックアップが構成されます。 ですから、SQL Server 2014 でのマネージド バックアップに関するドキュメントを確認することが大切です。

Azure VM の SQL Server のバックアップと復元に関するその他のガイダンスについては、Azure 仮想マシンでの SQL Server のバックアップおよび復元

その他の利用可能なオートメーション タスクについては、 SQL Server IaaS Agent 拡張機能に関するページをご覧ください。

Azure VM で SQL Server を実行する方法の詳細については、Azure 仮想マシンにおける SQL Server の概要に関するページをご覧ください。