Condividi tramite

还原 Azure VM 上的 SQL Server 数据库

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

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

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

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

Azure 备份可以还原 Azure VM 上运行的 SQL Server 数据库,如下所述:

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

恢复先决条件

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

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

还原数据库

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

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

按如下所述进行还原:

  1. 在 Azure 门户中,转到“备份中心”,然后单击“还原” 。

    显示启动还原过程的屏幕截图。

  2. 选择“Azure VM 中的 SQL”作为数据源类型,选择一个数据库进行还原,然后单击“继续”。

    显示选择数据源类型的屏幕截图。

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

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

    • 覆盖数据库:将数据还原到与原始源相同的 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 有权访问该文件共享。 你可以执行以下步骤,以授予对 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 备份服务将决定在还原为文件时要下载的文件链。 但在某些情况下,你可能不想再次下载整个内容。

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

排除备份文件类型

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 备份服务将尝试排除该文件中提到的还原链中的备份类型。

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

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

还原到特定还原点

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

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

    选择完整恢复点

    注意事项

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

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

如果数据库中文件的总字符串大小超过特定的限制,Azure 备份会将数据库文件列表存储在不同的 PIT 组件中,因此在执行还原操作期间无法设置目标还原路径。 文件将还原到 SQL 默认路径。

还原包含大文件的数据库

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

在从 Azure 门户还原时,可以使用“还原为文件”操作以 .bak 格式还原数据库文件。 了解详细信息

完成将 .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 配对区域)中还原 Azure VM 上托管的 SQL 数据库。

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

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

查看次要区域中的备份项

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

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

注意事项

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

次要区域中的备份项

次要区域中的数据库

在次要区域中进行还原

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

在何处还原以及如何还原

“正在触发还原”通知

注意事项

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

了解跨地区恢复的最低角色要求

监视次要区域还原作业

  1. 在 Azure 门户中,依次转到“备份中心”和“备份作业”

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

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

跨订阅还原

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

通过跨订阅还原 (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 备份支持的 SQL Server 数据库。