你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

关于 Azure VM 中的 SQL Server 备份

Azure 备份提供基于流的专用解决方案,用于备份在Azure 虚拟机(VM)中运行的SQL Server。 此解决方案考虑到了 Azure 备份的零基础结构备份、长期保留和集中管理的优点。 它还特别为 SQL Server 提供了以下优势:

  • 工作负荷感知备份,支持所有备份类型(完整备份、差异备份和日志备份)
  • 15 分钟恢复点目标 (RPO),频繁备份日志
  • 最多一秒的时点恢复
  • 单个数据库级别的备份和还原

注意

Azure 备份现在为Azure VM 中的SQL Server实例提供基于快照的备份,该实例目前为预览版。 基于快照的备份允许通过改进的性能保护大型数据库,并更快地从即时恢复层还原。 若要了解 Azure 中最新的产品增强功能和功能更新,请参阅 azure 更新Microsoft

若要查看我们今天支持的备份和还原方案,请参阅 支持矩阵。 有关常见问题,请参阅 常见问题

Azure VM 中 SQL 实例的快照备份(预览版)

Azure 备份提供了一种基于快照的 SQL 备份解决方案,可提高大型数据库的性能。 可以使用磁盘快照快速还原和频繁的日志备份来最大程度地减少数据丢失,帮助实现较低的恢复时间目标(RTO)和改进的恢复点目标(RPO)。

注意

适用于 SQL Server 实例的快照备份现已推出预览版。 基于快照的备份允许通过改进的性能保护大型数据库,并更快地从即时恢复层还原。

备份大型数据库时,快照备份具有以下优势:

  • 实例级别快照:在 SQL 实例级别创建快照备份,并在单个操作中选择多个数据库。 根据需要还原整个实例或单个数据库。

  • 对源服务器的影响极小:Azure 备份 会短暂地使数据库进入静默状态,以捕获应用程序一致性快照。 虽然数据库仅暂停几秒钟,但快照的创建和在运行层中的可用性可在几分钟内完成。 与流式备份不同,源机器的资源不会被长时间占用。

  • 经济高效:使用增量快照优化存储成本。

  • 改进的 RTO:利用即时/运行层级实现更快速的恢复。

  • 低 RPO:将日志备份与快照结合,从而实现更低的 RPO,并支持时间点还原。

支持矩阵中了解使用快照进行 SQL 备份的支持场景和限制。 若要使用 Azure 门户在 Azure VM 中备份SQL Server实例快照,请参阅本文

SQL Server 数据库的备份过程

此解决方案使用 SQL 本机 API 来备份 SQL 数据库。

  • 指定要保护的 SQL Server VM 并查询其中的数据库后,Azure 备份服务会在该 VM 上安装名为 AzureBackupWindowsWorkload 的工作负载备份扩展。

  • 此扩展包含协调器和 SQL 插件。 虽然协调器负责触发各种操作(例如配置备份、备份和还原)的工作流,但插件负责实际数据流。

  • 为了能够发现此 VM 上的数据库,Azure 备份将创建帐户 NT SERVICE\AzureWLBackupPluginSvc。 此帐户用于备份和还原,需要拥有 SQL sysadmin 权限。 该 NT SERVICE\AzureWLBackupPluginSvc 帐户是 虚拟服务帐户,因此不需要任何密码管理。 Azure 备份使用 NT AUTHORITY\SYSTEM 帐户进行数据库发现/查询,因此该帐户需要是 SQL 上的公共登录名。 如果 SQL Server VM 不是从 Azure 市场创建的,你可能会收到错误 UserErrorSQLNoSysadminMembership。 如果出现错误消息, 请按照这些说明进行操作

  • 在所选数据库上触发配置保护后,备份服务将使用备份计划和其他策略详细信息设置协调器,扩展将这些详细信息本地缓存在 VM 上。

  • 在计划的时间,协调器与插件通信,并开始使用 VDI(虚拟设备接口)从 SQL Server 流式传输备份数据。

  • 插件将数据直接发送到恢复服务保管库,因此不需要暂存位置。 Azure 备份服务对存储帐户中的数据进行加密和存储。

  • 数据传输完成后,协调器通过备份服务确认提交。

    SQL 备份体系结构

SQL Server实例快照的备份过程

Azure 备份使用托管磁盘增量快照来保护 Azure VM 中的 SQL 数据库。 备份策略控制快照创建、保留和日志备份行为,以实现快速还原和时间点恢复。

备份和还原流概述了由Azure 备份执行的逻辑端到端操作序列,其中包括以下操作:

  • 基于用户定义的备份策略创建托管磁盘增量快照。 目前,Azure 备份服务每 6 小时或更高一次支持一个快照。 可以每隔 15 分钟或更高一次配置日志备份。

  • 在 SQL 实例级别创建快照备份。 每个快照操作最多可以选择 12 个数据库。

  • 通过为一组数据库的底层磁盘创建快照,捕获所有选定数据库的应用程序一致性快照。

  • 在 Azure 订阅中保留指定资源组内的快照,保留期限由用户定义(最长 7 天)。 然后,Azure 备份 会根据所配置的策略,将数据移动到恢复服务保管库中,并存储为保管库备份,以供长期保留。

  • 将数据库级别的日志备份流式传送到保管库。 还原期间,服务将快照还原到备用 VM,并应用日志备份来实现时间点恢复。

了解如何使用 Azure 门户(预览版)备份 Azure VM 中的 SQL Server 实例快照

SQL Server备份的先决条件

在开始SQL Server备份之前,请查看以下先决条件:

  1. 确保有一个 SQL Server 实例在 Azure 中运行。 可以在市场中 快速创建 SQL Server 实例
  2. 查看 功能注意事项方案支持
  3. 查看 有关此方案的常见问题。

设置 VM 权限

在SQL Server上运行发现时,Azure 备份执行以下操作:

  • 添加 AzureBackupWindowsWorkload 扩展。
  • 创建 NT SERVICE\AzureWLBackupPluginSvc 帐户,以发现虚拟机上的数据库。 此帐户用于备份和还原,需要拥有 SQL sysadmin 权限。
  • Azure 备份使用 NT AUTHORITY\SYSTEM 帐户来发现 VM 上运行的数据库。 此帐户必须是 SQL 上的公共登录名。

如果你未在 Azure 市场中创建 SQL Server VM,或者在 SQL 2008 或 2008 R2 上操作,可能会收到 UserErrorSQLNoSysadminMembership 错误。

若要向在 Windows 2008 R2 上运行的 SQL 20082008 R2 授予权限,请参阅本节

对于所有其他版本,请使用以下步骤分配权限:

  1. 使用具有 SQL Server sysadmin 权限的帐户登录到 SQL Server Management Studio (SSMS)。 除非需要特殊权限,否则 Windows 身份验证应该正常运行。

  2. SQL Server 上,打开 Security/Logins 文件夹。

    打开“安全性/登录名”文件夹以查看帐户

  3. 右键单击“登录名”文件夹并选择“新建登录名”。 在“登录名 - 新建”中,选择“搜索”

    在“登录 - 新建”对话框中,选择“搜索”

  4. 在虚拟机注册和 SQL 发现阶段已创建 Windows 虚拟服务帐户 NT SSERVICE\AzureWLBackupPluginSvc。 输入“输入要选择的对象名称”中显示的帐户名。 选择“检查名称”以解析名称。 选择“确定”

    选择“检查名称”以解析未知的服务名称

  5. 服务器角色上,确保已选择 sysadmin 角色。 选择“确定”。 现在,所需的权限应会存在。

    确保已选择 sysadmin 服务器角色

    如果 SQL Server 实例是 Always-On 可用性组(AG)的一部分,请确保 NT AUTHORITY\SYSTEM 帐户已启用 VIEW SERVER STATE 权限。

    屏幕截图显示如何检查为备份选择的 SQL Server 实例的权限。

  6. 现在,将数据库与恢复服务保管库相关联。 在 Azure 门户中的“受保护的服务器”列表中,右键单击处于错误状态的服务器“重新发现数据库”。>

    验证服务器是否具有适当的权限

  7. 在“通知”区域查看进度。 找到选定的数据库后,会显示一条成功消息。

    部署成功消息

注意

如果 SQL Server 安装了多个 SQL Server 实例,则必须向所有 SQL 实例添加 NT Service\AzureWLBackupPluginSvc 帐户的 sysadmin 权限。

为 SQL 2008 和 SQL 2008 R2 分配 SQL sysadmin 权限

若要将 NT AUTHORITY\SYSTEMNT Service\AzureWLBackupPluginSvc 登录名添加到 SQL Server 实例,请执行以下步骤:

  1. 转到对象资源管理器中的 SQL Server 实例

  2. 转到 安全>登录信息

  3. 右键单击登录,然后选择新建登录使用 SSMS 新建登录

  4. 转到“ 常规 ”选项卡,输入 NT AUTHORITY\SYSTEM 作为登录名。

    SSMS 的登录名

  5. 转到 “服务器角色 ”选项卡,选择 公共 角色和 sysadmin 角色。

    在 SSMS 中选择角色

  6. 转到状态,为 连接到数据库引擎的权限选择授予,然后为登录选择启用选项。

    在 SSMS 中授予权限

  7. 选择“确定”

  8. 若要将 NT Service\AzureWLBackupPluginSvc 登录添加到 SQL Server 实例,请重复步骤 1-7

    如果登录名已存在,请确保其具有 sysadmin 服务器角色,并且在状态下,连接到数据库引擎的权限登录名授予选项均设置为启用

  9. 授予权限后,通过转到 Azure 门户中的恢复服务保管库>>>,重新发现数据库

    在 Azure 门户中重新发现 DB

或者,可以通过在管理员模式下运行以下 cmdlet 来自动执行权限分配。

注意

实例名称默认设置为 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 会产生以下费用:

  • 存储在恢复服务保管库中的快照备份按照 Azure 备份 定价计费。

  • 除了受保护实例费用和存储库存储成本外,Azure 备份 还会因操作层中的快照存储产生额外费用。

  • 托管磁盘快照的费用根据托管磁盘快照定价计算,费用按其在订阅中保留的时间长短收取。

后续步骤