SQL Server 2014 虚拟机(资源管理器)的自动备份

适用于:Azure 上的 SQL Server

自动备份会在运行 SQL Server 2014 Standard 或 Enterprise 的 Azure VM 上自动为所有现有数据库和新数据库配置托管备份到 Azure 。 这样,便可以配置使用持久 Azure Blob 存储的定期数据库备份。 自动备份依赖于 SQL Server 基础架构即服务 (IaaS) 代理扩展

注意

Azure 提供两种不同的部署模型用于创建和处理资源:Azure 资源管理器模型和经典模型。 本文介绍了资源管理器部署模型的使用。 对于新部署,建议使用资源管理器部署模型而非经典部署模型。

先决条件

若要使用自动备份,请考虑以下先决条件:

操作系统

  • Windows Server 2012 及更高版本

SQL Server 版本

  • SQL Server 2014 Standard
  • SQL Server 2014 Enterprise

注意

有关 SQL 2016 及更高版本,请参阅 SQL Server 2016 的自动备份

数据库配置

  • 目标用户数据库必须使用完整恢复模式。 系统数据库不需要使用完整恢复模型。 但是,如果需要为 modelmsdb 创建日志备份,则必须使用完整恢复模型。 有关对备份使用完整恢复模型产生的影响的详细信息,请参阅使用完整恢复模型的备份
  • SQL Server VM 已注册到 SQL IaaS 代理扩展,并且已启用“自动备份”功能。 由于自动备份依赖于扩展,因此只有默认实例或单个命名实例的目标数据库支持自动备份。 如果没有默认实例,并且存在多个命名实例,SQL IaaS 代理扩展将失败,自动备份将无法工作。

设置

下表描述了可为自动备份配置的选项。 实际配置步骤根据你使用的是 Azure 门户还是 Azure Windows PowerShell 命令而有所不同。 请注意,自动备份默认使用备份压缩,且不能禁用它。

设置 范围(默认值) 说明
自动备份 启用/禁用(已禁用) 为运行 SQL Server 2014 Standard 或 Enterprise 的 Azure VM 启用或禁用自动备份。
保持期 1-90 天(90 天) 保留备份的天数。
存储帐户 Azure 存储帐户 用于在 Blob 存储中存储自动备份文件的 Azure 存储帐户。 在此位置创建容器,用于存储所有备份文件。 备份文件命名约定包括日期、时间和计算机名称。
加密 启用/禁用(已禁用) 启用或禁用备份加密。 启用备份加密时,用于还原备份的证书使用相同的命名约定存放在同一 automaticbackup 容器中的指定存储帐户内。 如果密码发生更改,则使用该密码生成新证书,但旧证书在备份之前仍会还原。
密码 密码文本 加密密钥的密码。 仅当启用了加密时才需要此设置。 若要还原加密的备份,必须具有创建该备份时使用的正确密码和相关证书。

配置新 VM

在资源管理器部署模型中创建新的 SQL Server 2014 虚拟机时,可以使用 Azure 门户配置自动备份。

在“SQL Server 设置”选项卡上,向下滚动到“自动备份”,然后选择“启用” 。 下面的 Azure 门户屏幕截图显示了“SQL 自动备份”设置。

SQL Automated Backup configuration in the Azure portal

配置现有 VM

对于现有的 SQL Server VM,可以启用和禁用自动备份、更改保留期、指定存储帐户以及从 Azure 门户启用加密。

导航到 SQL Server 2014 虚拟机的 SQL 虚拟机资源,然后选择“备份”。

SQL Automated Backup for existing VMs

完成后,选择“备份”页底部的“应用”按钮,以保存更改 。

首次启用自动备份时,Azure 会在后台配置 SQL Server IaaS 代理。 在此期间,Azure 门户可能不会显示自动备份已配置。 请等待几分钟,以便安装和配置代理。 之后,Azure 门户将反映出新设置。

注意

也可以使用模板来配置自动备份。 有关详细信息,请参阅 Azure quickstart template for Automated Backup(用于自动备份的 Azure 快速入门模板)。

使用 PowerShell 配置

可使用 PowerShell 配置自动备份。 开始之前,必须:

注意

本文使用 Azure Az PowerShell 模块,这是与 Azure 交互时推荐使用的 PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

验证当前设置

如果在预配期间启用了自动备份,可以使用 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          : 

如果输出显示 Enable 设置为 False,则必须启用自动备份。 幸运的是,可通过相同的方式启用和配置自动备份。 有关信息,请参阅下一部分。

注意

如果在进行更改后立即检查设置,看到的可能是旧配置值。 请等待几分钟再检查设置,确保更改已应用。

配置自动备份

随时可以使用 PowerShell 来启用自动备份以及修改其配置和行为。

首先,为备份文件选择或创建存储帐户。 以下脚本选择一个存储帐户,或者创建一个存储帐户(如果不存在)。

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

$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 }

注意

自动备份不支持在高级存储中存储备份,但可以从使用高级存储的 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 代理。

注意

还有仅适用于 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 China East 2"
$storage_accountname = "yourstorageaccount"
$storage_url = "https://yourstorageaccount.blob.core.chinacloudapi.cn/"
$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 

监视

可通过一种方式监视 SQL Server 2014 上的自动备份。 由于自动备份使用 SQL Server 托管备份功能,同样的监视方法对两者均适用。

可通过调用 msdb.smart_admin.sp_get_backup_diagnostics 轮询状态。 或查询 msdb.smart_admin.fn_get_health_status 表值函数。

注意

适用于 SQL Server 2014 中托管备份的架构是 msdb.smart_admin。 在 SQL Server 2016 中,架构需更改为 msdb.managed_backup,且参考主题使用此较新架构。 但对于 SQL Server 2014,必须为所有托管备份对象继续使用 smart_admin 架构。

后续步骤

自动备份会在 Azure VM 上配置托管备份。 因此,请务必查看有关 SQL Server 2014 托管备份的文档

可以在以下文章中找到针对 Azure VM 上 SQL Server 的其他备份和还原指导:Azure 虚拟机上的 SQL Server 的备份和还原

有关其他可用自动化任务的信息,请参阅 SQL Server IaaS 代理扩展

有关在 Azure VM 上运行 SQL Server 的详细信息,请参阅 Azure 虚拟机上的 SQL Server 概述