你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 备份 提供基于流的专用解决方案,用于备份在 Azure VM 中运行的 SQL Server。 此解决方案考虑到了 Azure 备份的零基础结构备份、长期保留和集中管理的优点。 它还特别为 SQL Server 提供了以下优势:
- 工作负荷感知备份,支持所有备份类型(完整备份、差异备份和日志备份)
- 15 分钟恢复点目标 (RPO),频繁备份日志
- 最多一秒的时点恢复
- 单数据库级别的备份和还原
若要查看我们今天支持的备份和还原方案,请参阅 支持矩阵。
备份过程
此解决方案利用 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 Server 实例在 Azure 中运行。 可以在市场中 快速创建 SQL Server 实例 。
- 查看 功能注意事项 和 方案支持。
- 查看 有关此方案的常见问题。
设置 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 2008 和 2008 R2 的权限,请参阅 此处。
对于所有其他版本,可使用以下步骤解决权限问题:
使用拥有 SQL Server sysadmin 权限的帐户登录到 SQL Server Management Studio (SSMS)。 除非需要特殊权限,否则 Windows 身份验证应该正常运行。
在 SQL 服务器上,打开“安全/登录名”文件夹。
右键单击“登录名”文件夹并选择“新建登录名”。 在“登录名 - 新建”中,选择“搜索”。
在虚拟机注册和 SQL 发现阶段已创建 Windows 虚拟服务帐户 NT SSERVICE\AzureWLBackupPluginSvc。 输入“输入要选择的对象名称”中显示的帐户名。 选择“检查名称”以解析名称。 选择“确定”。
在“服务器角色”中,确保“sysadmin”角色已选中。 选择“确定”。 现在,所需的权限应会存在。
如果 SQL Server 实例是 Always-On 可用性组(AG)的一部分,请确保 NT AUTHORITY\SYSTEM 帐户已启用 VIEW SERVER STATE 权限。
现在,将数据库与恢复服务保管库相关联。 在 Azure 门户中的“受保护的服务器”列表中,右键单击处于错误状态的服务器 “重新发现数据库”。
在“通知”区域查看进度。 找到选定的数据库后,会显示一条成功消息。
注意
如果 SQL Server 安装了多个 SQL Server 实例,则必须向所有 SQL 实例添加 NT Service\AzureWLBackupPluginSvc 帐户的 sysadmin 权限。
为 SQL sysadmin 授予 SQL 2008 和 SQL 2008 R2 的权限
将 NT AUTHORITY\SYSTEM 和 NT Service\AzureWLBackupPluginSvc 登录名添加到 SQL Server 实例:
在对象资源管理器中转到该 SQL Server 实例。
导航到“安全性”->“登录名”
右键单击“登录名”,并选择“新建登录名…”
转到“常规”选项卡,输入 NT AUTHORITY\SYSTEM 作为登录名。
转到“服务器角色”,选择“public”和“sysadmin”角色。
转到“状态”。 授予连接到数据库引擎的权限,并将“登录名”设置为“已启用”。
选择“确定”。
重复相同的步骤序列(上述步骤 1-7),将 NT Service\AzureWLBackupPluginSvc 登录名添加到 SQL Server 实例。 如果该登录名已存在,请确保它具有 sysadmin 服务器角色并处于这种状态:已授予连接到数据库引擎的权限,且“登录名”设置为“已启用”。
授予权限后,在门户中“重新发现 DB”:“保管库”-“管理”->“备份基础结构”-“Azure VM 中的工作负荷”>>:
或者,可以在管理员模式下运行以下 PowerShell 命令,来自动授予权限。 实例名称默认设置为 MSSQLSERVER。 根据需要更改脚本中的实例名称参数。
param(
[Parameter(Mandatory=$false)]
[string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
$fullInstance = $env:COMPUTERNAME # In case it is 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
}
配置同时备份
现在可以配置备份,以同时将 SQL Server 恢复点和日志保存在本地存储和恢复服务保管库中。
若要配置同时同步,请按照以下步骤进行操作:
转到
C:\Program Files\Azure Workload Backup\bin\plugins该位置,然后创建 文件PluginConfigSettings.json(如果不存在)。将逗号分隔的键值实体(包含键
EnableLocalDiskBackupForBackupTypes和LocalDiskBackupFolderPath)添加到该 JSON 文件。在
EnableLocalDiskBackupForBackupTypes下,列出要在本地存储的备份类型。例如,如果要存储 完整 备份和 日志 备份,请提及
["Full", "Log"]。 若要仅存储日志备份,请提及["Log"]。在下方
LocalDiskBackupFolderPath,提及 本地文件夹的路径。 确保在提及 JSON 文件中的路径时使用 双正斜杠 。例如,如果本地备份的首选路径为
E:\LocalBackup,请将 JSON 中的路径提及为E:\\LocalBackup。最终的 JSON 应显示为:
{ "EnableLocalDiskBackupForBackupTypes": ["Log"], "LocalDiskBackupFolderPath": "E:\\LocalBackup", }如果 JSON 文件中还有其他预填充的条目,请在 右大括号前在 JSON 文件的底部添加上述两个条目。
若要使更改立即生效,而不是常规一小时,请转到 TaskManager>服务,右键单击 AzureWLbackupPluginSvc 并选择“ 停止”。
注意
此操作将取消所有正在进行的备份作业。
存储的备份文件的命名约定及其文件夹结构为
{LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}。例如,如果 SQL 实例
Contoso下有一个数据库MSSQLSERVER,则文件将位于E:\LocalBackup\MSSQLSERVER\Contoso中。该文件的名称为
VDI device set guid,它用于备份操作。检查
LocalDiskBackupFolderPath下的目标位置是否对 具有 读取 和NT Service\AzureWLBackupPluginSvc权限。注意
对于本地 VM 磁盘上的文件夹,右键单击该文件夹,并在
NT Service\AzureWLBackupPluginSvc”选项卡上配置所需的权限。如果使用网络或 SMB 共享,请通过从有权访问共享的用户控制台运行以下 PowerShell cmdlet 来配置权限:
$cred = Get-Credential New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>: -FullAccess @("<Comma Separated list of accounts>") -Persistent $true示例:
$cred = Get-Credential New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y: -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true