Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure Backup提供了基于流的专用解决方案,用于备份在 Azure VM 中运行的SQL Server。 此解决方案符合Azure Backup零基础结构备份、长期保留和集中管理的优势。 此外,它还为SQL Server提供以下优势:
- 工作负荷感知备份,支持所有备份类型(完整备份、差异备份和日志备份)
- 15 分钟 RPO (数据恢复点目标),频繁日志备份
- 时间点恢复精确到秒级
- 单个数据库级别的备份和还原
若要查看我们目前支持的备份和还原方案,请参阅支持矩阵。 有关常见问题,请参阅 常见问题。
注意事项
基于快照的备份的专用预览版现已推出! 基于快照的备份将帮助你以高性能方式备份大型数据库,同时确保从即时还原层更快地还原。
备份过程
此解决方案利用 SQL 本机 API 来备份 SQL 数据库。
指定要保护并查询其中数据库的SQL Server VM 后,Azure Backup服务会按名称
AzureBackupWindowsWorkload扩展在 VM 上安装工作负荷备份扩展。此扩展包含协调器和 SQL 插件。 虽然协调器负责触发各种操作(例如配置备份、执行备份与还原)的工作流,但插件负责实际的数据流。
为了能够发现此 VM 上的数据库,Azure Backup创建帐户
NT SERVICE\AzureWLBackupPluginSvc。 此帐户用于备份和还原,需要拥有 SQL sysadmin 权限。NT SERVICE\AzureWLBackupPluginSvc帐户是 Virtual 服务帐户,因此不需要任何密码管理。 Azure Backup使用NT AUTHORITY\SYSTEM帐户进行数据库发现/查询,因此此帐户需要是 SQL 上的公共登录名。 如果未从 Azure Marketplace 创建SQL Server VM,则可能会收到错误UserErrorSQLNoSysadminMembership。 如果发生此错误,请遵照这些说明予以解决。在所选数据库上触发配置保护后,备份服务将使用备份计划和其他策略详细信息设置协调器,扩展将这些详细信息本地缓存在 VM 上。
在计划的时间,协调器与插件通信,并开始使用 VDI(虚拟设备接口)从SQL server流式传输备份数据。
插件将数据直接发送到恢复服务保管库,因此不需要暂存位置。 数据由Azure Backup服务加密并存储在storage帐户中。
数据传输完成后,协调器通过备份服务确认提交。
开始之前
在开始之前,请验证以下要求:
- 请确保在Azure中运行SQL Server实例。 可以在市场中轻松创建SQL Server实例。
- 查看功能注意事项和方案支持。
- 查看有关此方案的常见问题解答。
设置 VM 权限
在SQL Server上运行发现时,Azure Backup执行以下作:
- 添加 AzureBackupWindowsWorkload 扩展。
- 创建 NT SERVICE\AzureWLBackupPluginSvc 帐户,以发现虚拟机上的数据库。 此帐户用于备份和还原,需要拥有 SQL sysadmin 权限。
- Azure Backup 使用 NT AUTHORITY\SYSTEM 帐户检测到在 VM 上运行的数据库。 此帐户必须是 SQL 上的公共登录名。
如果未在 Azure Marketplace 中创建SQL Server VM,或者使用的是 SQL 2008 或 2008 R2,则可能会收到 UserErrorSQLNoSysadminMembership 错误。
要了解在使用 Windows 2008 R2 上运行的 SQL 2008 和 2008 R2 时如何授权,请参阅此处 。
对于所有其他版本,可使用以下步骤解决权限问题:
使用具有 SQL Server sysadmin 权限的帐户登录到 SQL Server Management Studio (SSMS)。 除非需要特殊权限,否则Windows authentication应正常工作。
在SQL Server上,打开 Security/Logins 文件夹。
右键单击“登录名”文件夹并选择“新建登录名”。 在《Login - New》中,选择《Search》。
在虚拟机注册和 SQL 发现阶段已创建 Windows 虚拟服务帐户 NT SSERVICE\AzureWLBackupPluginSvc。 输入“输入要选择的对象名称”中显示的帐户名。 选择“检查名称”以解析名称。 选择“确定”。
在“服务器角色”中,确保“sysadmin”角色已选中。 选择“确定”。 现在,所需的权限应会存在。
如果 SQL Server 实例属于 Always-On 可用性组 (AG),请确保 NT AUTHORITY\SYSTEM 帐户已启用 VIEW SERVER STATE 权限。
现在,将数据库与恢复服务保管库相关联。 在 Azure portal 的 Protected Servers 列表中,右键单击处于错误状态的服务器>Rediscover DB。
在“通知”区域查看进度。 找到选定的数据库后,会显示一条成功消息。
注意事项
如果SQL Server安装了多个SQL Server实例,则必须为所有 SQL 实例添加 NT Service\AzureWLBackupPluginSvc 帐户的 sysadmin 权限。
为 SQL 2008 和 SQL 2008 R2 授予 sysadmin 权限
将 NT AUTHORITY\SYSTEM 和 NT Service\AzureWLBackupPluginSvc 登录名添加到SQL Server实例:
在 Object Explorer 中导航到 SQL Server 实例。
导航到“安全性”->“登录名”
右键单击“登录名”,并选择“新建登录名…”
转到“常规”选项卡并输入 NT AUTHORITY\SYSTEM 作为登录名。
转到“服务器角色”,选择“public”和“sysadmin”角色。
转到“状态”。 Grant 允许以启用身份连接到数据库引擎和登录的权限。
选择“确定”。
重复上述步骤(1-7)的相同顺序,将 NT Service\AzureWLBackupPluginSvc 登录添加到SQL Server实例。 如果登录名已存在,请确保其具有 sysadmin 服务器角色,并在“状态”下授予连接到数据库引擎的权限,并确保“登录名”显示为“已启用”。
授予权限后, 门户中的
Rediscover DB :Vault- 管理< 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 共享,请从已有权access共享的用户控制台运行以下 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.chinacloudapi.cn\rsvshare -Credential $cred -LocalPath Y: -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true