Compartilhar via

还原 Azure VM 上的SQL Server数据库

本文介绍如何还原Azure虚拟机(VM)上运行的SQL Server数据库,Azure Backup服务已备份到Azure Backup恢复服务保管库。

本文介绍如何还原SQL Server数据库。 有关详细信息,请参阅 备份 Azure VM 上的SQL Server数据库

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

还原到某个时间点或恢复点

Azure Backup可以还原在Azure VM 上运行SQL Server数据库,如下所示:

  • 使用事务日志备份还原到特定的日期或时间(精确到秒)。 Azure Backup会自动确定适当的完整差异备份和根据所选时间还原所需的日志备份链。
  • 还原特定的完整备份或差异备份,这样就可以还原到特定的恢复点。

恢复先决条件

在还原数据库之前,请注意以下事项:

  • 可以将数据库还原到同一Azure区域中SQL Server实例。
  • 目标服务器必须注册到与源服务器相同的保管库。 如果要将备份还原到其他保管库,请启用跨订阅还原
  • 如果在服务器上运行多个实例,则所有实例都应启动并运行。 否则,服务器将不会出现在目标服务器列表中,从而无法将数据库还原到该服务器。 有关详细信息,请参阅 故障排除步骤
  • 若要将 TDE 加密的数据库还原到另一个SQL Server,需要首先将证书存储到目标服务器
  • 应使用还原为文件选项还原启用了 CDC 的数据库。
  • 强烈建议使用还原为文件选项还原“master”数据库,然后再使用 T-SQL 命令进行还原。
  • 对于所有系统数据库(model,msdb),在触发还原之前停止SQL Server Agent服务。
  • 关闭任何可能尝试与其中任何数据库建立连接的应用程序。
  • 对于主数据库,不支持用于还原的“备用位置”选项。 建议使用“还原为文件”选项还原主数据库,然后使用 T-SQL 命令还原。
  • 对于 msdbmodel, 仅当还原的数据库名称不同于目标数据库名称时,才支持还原的“备用位置”选项。 如果要使用与目标数据库同名的数据库进行还原,建议使用'还原为文件'选项,然后使用命令还原。

还原数据库

若要进行还原,需要以下权限:

  • “备份操作员”在执行还原操作的保管库中拥有权限。
  • 访问权限(包含写入权限)到已备份的源 VM。
  • Contributor(写入)访问权限至目标虚拟机:
    • 如果您还原到同一台虚拟机,那么该虚拟机即为源虚拟机。
    • 若要还原到替代位置,这就是新的目标 VM。

按如下所述进行还原:

  1. 在Azure portal中,转到 Backup 中心并单击restore

    Screenshot 显示启动还原过程。

  2. 在 Azure VM 中选择 SQL作为数据源类型,选择要还原的数据库,然后单击 Continue

    显示用于选择数据源类型的屏幕截图.

  3. 在“还原配置”中,指定要将数据还原到何处(或如何还原):

    • 备用位置:将数据库还原到备用位置,同时保留原始源数据库。

    • Overwrite DB:将数据还原到与原始源相同的SQL Server实例。 此选项会覆盖原始数据库。

      重要

      如果所选的数据库属于 Always On 可用性组,那么 SQL Server 不会允许覆盖该数据库。 仅“备用位置”可用。

    • 还原为文件:不是将其还原为数据库,而是还原出备份文件。在这些备份文件所在的任何计算机上,可以稍后使用SQL Server Management Studio将其恢复为数据库。

还原到备用位置

  1. 在“还原配置”菜单中的“还原位置”下,选择“备用位置”。

  2. 选择要还原数据库的SQL Server名称和实例。

  3. 在“还原数据库名称”框中,输入目标数据库的名称。

  4. 如果适用,请选择“覆盖”,如果在选定的 SQL 实例上已存在同名的 DB。

  5. 选择“还原点”,并选择是还原到特定时间点,还是还原到特定恢复点

    屏幕截图显示选择还原点。

    截图显示还原到时间点。

  6. 在“高级配置”菜单中:

    • 若要使数据库在还原后保持不可运行状态,请启用“使用 NORECOVERY 还原”。

    • 若要更改目标服务器上的还原位置,请输入新的目标路径。

      输入目标路径

  7. 选择“确定”以触发还原。 在“通知”区域跟踪还原进度,或在保管库的“备份作业”视图下查看。

    注意事项

    时间点还原仅适用于采用完整和批量日志记录恢复模式的数据库日志备份。

还原并覆盖

  1. 还原配置菜单中的还原位置下,选择覆盖数据库>确定

    选择覆盖数据库

  2. 选择还原点中, 选择日志(时间点)恢复到特定的时间点。 或者选择“完整备份和差异备份”以还原到特定的恢复点

    注意事项

    时间点还原仅适用于采用完整和批量日志记录恢复模式的数据库日志备份。

还原为文件

若要将备份数据作为 .bak 文件而不是数据库还原,请选择“作为文件还原”。 将文件转储到指定路径后,您可以将这些文件放到任何想要将其还原为数据库的计算机上。 由于可将这些文件移到任何计算机上,因此现在可以跨订阅和区域进行数据还原。

  1. 在“还原位置及还原方式”下,选择“作为文件还原” 。

  2. 选择要还原备份文件的SQL Server名称。

  3. 在“服务器上的目标路径”中,输入在步骤 2 中选择的服务器上的文件夹路径。 此位置是服务要将全部所需备份文件转储到的位置。 通常,当指定为目标路径时,Azure文件共享的网络共享路径或已装载的路径可以让同一网络中的其他计算机或装载了相同Azure文件共享的计算机更容易访问这些文件。

    注意事项

    若要还原目标注册 VM 上装载的Azure文件共享上的数据库备份文件,请确保 NT AUTHORITY\SYSTEM 已access到文件共享。 你可以执行以下步骤,以授予对 VM 上装载的 AFS 的读/写权限:

    • 运行 PsExec -s cmd 进入到 NT AUTHORITY\SYSTEM 命令行
      • 执行 cmdkey /add:<storageacct>.file.core.chinacloudapi.cn /user:AZURE\<storageacct> /pass:<storagekey>
      • 使用 dir \\<storageacct>.file.core.chinacloudapi.cn\<filesharename> 验证访问权限
    • 启动文件还原操作,从备份保管库还原到 \\<storageacct>.file.core.chinacloudapi.cn\<filesharename> 作为路径
      可以从 Sysinternals 页下载 PsExec。
  4. 选择“确定”。

    选择还原为文件

  5. 选择“还原点”,并选择是还原到特定时间点,还是还原到特定恢复点

  6. 使用还原为文件执行 SQL 数据库时间点还原时,它将存储从完整备份所选时间点的所有恢复点。 然后,可以在任何包含这些文件的计算机上使用 SQL Server Management Studio 将其还原为数据库。

    目标路径中的已恢复备份文件

还原到特定时间点

如果已选择“日志(时间点)”作为还原类型,请执行以下操作:

  1. 在“还原日期/时间”下,打开日历。 在“日历”中,包含恢复点的日期以粗体显示,当前日期已突出显示。

  2. 选择包含恢复点的日期。 不能选择没有恢复点的日期。

    打开日历

  3. 选择日期后,时间线图会显示连续范围内的可用恢复点。

  4. 在时间线图表中指定恢复时间,或选择一个时间。 然后选择“确定”。

部分还原为文件

Azure Backup 服务在还原过程中决定需要下载的文件序列。 但在某些情况下,你可能不想再次下载整个内容。

例如,如果您有每周完全备份、每日差异备份和日志备份的策略,并且已经下载了某个特定差异备份的文件。 你发现这不是合适的恢复点,并决定下载第二天的差异备份。 现在您只需要差异文件,因为您已经有了初始完整文件。 由于部分还原为文件的功能(由 Azure Backup 提供),现在可以从下载链中排除完整内容,并仅下载差异。

排除备份文件类型

ExtensionSettingsOverrides.json 是一个 JSON(JavaScript 对象表示法)文件,包含针对 SQL 的 Azure 备份服务的多个设置重写。 对于“部分还原为文件”操作,必须添加新的 JSON 字段 RecoveryPointTypesToBeExcludedForRestoreAsFiles。 此字段包含一个字符串值,该值表示下一个还原为文件操作中应排除哪些恢复点类型。

  1. 在要下载文件的目标计算机上,转到“C:\Program Files\Azure Workload Backup\bin”文件夹

  2. 创建名为“ExtensionSettingsOverrides.JSON”的新 JSON 文件(如果尚不存在)。

  3. 添加以下 JSON 键值对

    {
    "RecoveryPointTypesToBeExcludedForRestoreAsFiles": "ExcludeFull"
    }
    
  4. 不需要重新启动任何服务。 Azure Backup服务将尝试在此文件中所述的还原链中排除备份类型。

RecoveryPointTypesToBeExcludedForRestoreAsFiles 只接受特定值,这些值表示还原期间要排除的恢复点。 对于 SQL,这些值为:

  • ExcludeFull(如果还原点链中存在其他备份类型,如差异备份和日志备份,则将下载它们)
  • ExcludeFullAndDifferential(如果还原点链中存在其他备份类型,如日志备份,则将下载它们)
  • ExcludeFullAndIncremental(如果还原点链中存在其他备份类型,如日志备份,则将下载它们)
  • 除全备份、差异备份和增量备份外(如果还原点链中存在其他备份类型,例如日志备份,则会下载这些备份)

还原到特定还原点

如果已选择完整和差异作为还原类型,请执行以下操作:

  1. 在列表中选择一个恢复点,然后选择“确定”完成还原点过程。

    选择完整恢复点

    注意事项

    默认情况下,将显示过去 30 天的恢复点。 通过选择“筛选器”并选择自定义范围,可以显示 30 天之前的恢复点。

还原包含大量文件的数据库

如果数据库中的文件的总字符串大小大于 部分限制,Azure Backup将数据库文件的列表存储在不同的 pit 组件中,因此无法在还原作期间设置目标还原路径。 文件将还原到 SQL 默认路径。

使用大型文件还原数据库

使用 SSMS 从 .bak 文件恢复数据库

可以使用 还原为文件 操作,在从 Azure 门户还原时,采用 .bak 格式来还原数据库文件。 Learn more.

.bak 文件还原到Azure虚拟机完成后,可以通过 SSMS 触发还原TSQL 命令

若要将数据库文件还原到源服务器上的原始路径,请从 TSQL 还原查询中删除 MOVE 子句。

示例

  USE [master] 
  RESTORE DATABASE [<DBName>] FROM  DISK = N'<.bak file path>'

注意事项

目标服务器上不应有相同的数据库文件(还原并替换)。 此外,还可以在目标服务器上启用即时文件初始化,以减少文件初始化所用的时间

若要从目标还原服务器重定位数据库文件,可以使用 MOVE 子句来构建 TSQL 命令。

  USE [master] 
  RESTORE DATABASE [<DBName>] FROM  DISK = N'<.bak file path>'  MOVE N'<LogicalName1>' TO N'<TargetFilePath1OnDisk>',  MOVE N'<LogicalName2>' TO N'<TargetFilePath2OnDisk>' GO

示例

  USE [master] 
  RESTORE DATABASE [test] FROM  DISK = N'J:\dbBackupFiles\test.bak' WITH  FILE = 1,  MOVE N'test' TO N'F:\data\test.mdf',  MOVE N'test_log' TO N'G:\log\test_log.ldf',  NOUNLOAD,  STATS = 5 
  GO

如果数据库有两个以上的文件,则可以向还原查询添加其他 MOVE 子句。 还可以使用 SSMS 通过 .bak 文件进行数据库恢复。 了解详细信息

注意事项

对于大型数据库恢复,建议使用 TSQL 语句。 如果要重定位特定的数据库文件,请查看在“还原为文件”操作期间创建的 JSON 格式的数据库文件列表。

跨区域还原

作为还原选项之一,跨区域还原(CRR)允许还原次要区域中Azure VM 上托管的 SQL 数据库,这是一个Azure配对区域。

要载入此功能,请阅读“准备阶段”部分

若要查看是否启用了 CRR,请按照配置跨区域还原中的说明进行操作

查看次要区域中的备份项

如果启用了 CRR,则可以查看次要区域中的备份项。

  1. 在门户中,前往恢复服务保管库,然后转到>。
  2. 选择“次要区域”以查看次要区域中的项。

注意事项

只有支持 CRR 功能的备份管理类型才会显示在列表中。 目前,仅支持将次要区域数据还原到次要区域。

在次要区域中的备份项

在次要区域中的 数据库

在次要区域中进行还原

次要区域还原用户体验将类似于主要区域还原用户体验。 在“还原配置”窗格中配置详细信息以配置还原时,系统会提示你仅提供次要区域参数。 保管库应存在于次要区域中,SQL server应注册到次要区域中的保管库。

在哪里以及如何还原

触发还原进度通知

注意事项

  • 在触发还原并在数据传输阶段后,无法取消还原作业。
  • 跨区域执行还原操作所需的角色/访问级别是在订阅中具有备份操作员角色,并在源和目标虚拟机上具有贡献者(写)访问权限。 若要查看备份作业,至少需要在订阅中具有备份读取者权限。
  • 次要区域中可用的备份数据的恢复时间目标(RPO)为 12 小时。 因此,打开 CRR 时,次要区域的 RPO 为 12 小时 + 日志频率持续时间(可以设置为至少 15 分钟)。

了解跨区域还原的最低角色要求。

监视次要区域还原作业

  1. 在Azure portal中,转到 Backup center>Backup Jobs

  2. 对 CrossRegionRestore 的筛选操作,以便查看次级区域中的作业。

    截图显示已筛选的备份作业。

跨订阅还原

Azure Backup 现在允许您根据以下 Azure RBAC 要求,从还原点将 SQL 数据库还原到任何订阅。 默认情况下,Azure Backup会还原到备份还原点所在的同一订阅中。

通过跨订阅还原 (CSR),如果具有还原权限,您可以灵活地还原到您租户下的任何订阅和任何保管库。 默认情况下,将在所有恢复服务保管库(现有和新创建的保管库)上启用 CSR。

注意事项

  • 可以通过恢复服务保管库触发跨订阅恢复。
  • CSR 仅支持基于流式处理的备份,不支持基于快照的备份。
  • 不支持将跨区域还原 (CRR) 与 CSR 一起使用。

Azure RBAC 要求

操作类型 备份操作员 恢复服务保管库 备用操作员
还原数据库或还原为文件 Virtual Machine Contributor 已备份的源 VM 可考虑具有以下权限的自定义角色而不是内置角色:

- Microsoft.Compute/virtualMachines/write
- Microsoft.Compute/virtualMachines/read
Virtual Machine Contributor 将在其中还原数据库或创建文件的目标 VM。 可考虑具有以下权限的自定义角色,而不是内置角色:

- Microsoft.Compute/virtualMachines/write
- Microsoft.Compute/virtualMachines/read
Backup Operator 目标恢复服务存储库

默认情况下,在恢复服务保管库上启用 CSR。 若要更新恢复服务保管库还原设置,请转到“属性”>“跨订阅还原”,然后进行所需的更改。

屏幕截图显示如何修改适用于 SQL 数据库的恢复服务保管库上的跨订阅还原设置。

后续步骤

管理和监视由Azure Backup备份的SQL Server数据库。