Compartir a través de

从 Azure SQL Managed Instance 中的备份还原数据库

applies to:Azure SQL Managed Instance

本文提供从Azure SQL Managed Instance备份中恢复数据库的步骤。 有关 Azure SQL Database,请参阅 在 Azure SQL Database 中从备份中恢复数据库

概述

自动数据库备份有助于保护数据库,使其免受用户和应用程序错误、数据库意外删除和长时间中断的影响。 此内置的功能适用于所有服务层级和计算大小。 以下选项适用于通过自动备份进行的数据库恢复:

  • 在恢复到保持期内指定时间点的同一托管实例上创建新数据库。
  • 在恢复到保持期内指定时间点的同一托管实例或其他托管实例上创建新数据库。
  • 在恢复到已删除数据库的删除时间的同一托管实例或不同托管实例上创建数据库。
  • 在恢复到最新备份点的同一租户和同一区域中的同一订阅或不同订阅中的任一托管实例上创建新数据库。

如果你已配置长期保留 (LTR),则还可以从任何实例上的任何长期保留备份创建新数据库。

重要

还原期间无法覆盖现有数据库。

恢复时间

多个因素影响通过自动数据库备份还原数据库所需的恢复时间:

  • 数据库的大小
  • 数据库的计算大小
  • 所涉及的事务日志数
  • 需要重新播放以恢复到还原点的活动数量
  • 还原到不同区域时的网络带宽
  • 目标区域中处理的并行还原请求数

对于较大或非常活跃的数据库,还原可能要花费几个小时。 某个区域发生故障的时间较长可能会导致大量要求进行灾难恢复的异地还原请求。 存在很多请求时,单个数据库的恢复时间可能会增加。 大部分数据库还原操作可在 12 小时内完成。

提示

对于Azure SQL Managed Instance,系统更新优先于正在进行的数据库还原。 如果 SQL Managed Instance 进行系统更新,所有待处理的还原操作会被暂停,并在更新应用后恢复。 此系统行为可能会延长还原时间,并且对长时间运行的还原可能影响特别大。

为了实现可预测的数据库还原时间,请考虑配置维护时段,以便在特定的日期和时间计划系统更新。 另请考虑在计划维护时段外运行数据库还原。

权限

若要使用自动备份进行恢复,你必须是:

  • 订阅中SQL Server参与者角色或SQL Managed Instance参与者角色(具体取决于恢复目标)的成员
  • 订阅所有者

有关详细信息,请参阅 Azure RBAC:内置角色

可以使用 Azure 门户、PowerShell 或 REST API 进行恢复。 不能使用Transact-SQL。

时间点还原

可以将数据库还原到先前时间点。 该请求可以指定还原的数据库的任何服务层级或计算大小。 确保在你将要还原数据库的实例中有足够的资源。

还原完成后,它会在目标实例上新建数据库,无论它是同一实例还是其他实例。 还原的数据库将基于其服务层级和计算大小按标准费率计费。 在数据库还原完成之前,不会产生费用。

通常,为恢复目的将数据库还原到较早点。 可将还原的数据库视为原始数据库的替代数据库,或使用它作为数据源来更新原始数据库。

重要

不能对异地辅助数据库执行时间点还原。 只能对主数据库执行此操作。

  • 数据库替换

    若要用还原的数据库替换原始数据库,则应指定原始数据库的计算大小和服务层级。 然后,可以使用 T-SQL 中的 ALTER DATABASE 命令来重命名原始数据库,并为还原的数据库指定原有的名称。

  • 数据恢复

    如果你打算从还原的数据库检索数据以从用户或应用程序错误中恢复,则需要编写并运行一个数据恢复脚本,用于从还原的数据库提取数据并将其应用到原始数据库。 尽管还原操作可能需要很长时间才能完成,但在整个还原过程中,你都可以在数据库列表中看到正在还原的数据库。

    如果在还原期间删除数据库,则会取消还原操作。 不会对未完成还原的数据库收费。

若要使用 Azure 门户将SQL Managed Instance中的数据库恢复到某个时间点,可以在门户中转到数据库,然后选择 Restore。 或者,可以打开目标SQL Managed Instance概述页,然后选择工具栏上的 + 新建数据库以打开 创建Azure SQL托管数据库页。

屏幕截图显示 Azure 门户中 SQL 托管实例概述窗格,并选择了添加新数据库。

在“基本信息”选项卡上提供目标托管实例详细信息,并从“数据源”选项卡中选择一种备份类型。

Azure 门户的截图,显示了“创建 Azure SQL 托管数据库”页面的数据源选项卡,选择了时间点恢复。

有关更多详细信息,请查看时间点还原一文。

已删除的数据库还原

在同一实例或非源实例上,可以将已删除的数据库还原到删除时间点或更早的时间点。 目标实例可以与源实例位于同一订阅,也可以位于不同订阅。 通过从备份创建新数据库来还原已删除的数据库。

若要使用 Azure 门户恢复数据库,请打开托管实例的概述页,然后选择 Backups。 选择显示 Deleted 备份,然后选择要恢复的已删除备份旁边的 restore 以打开 Create Azure SQL Managed Database 页。 在“基本信息”选项卡中提供目标托管实例的详细信息,在“数据源”选项卡中提供源托管实例的详细信息。在“其他设置”选项卡中配置保留设置。

Azure 门户的屏幕截图,SQL 托管实例的“备份”页,显示已删除的数据库并选择“还原”操作。

提示

最近删除的数据库可能需要几分钟才能显示在 Azure 门户中的 Deleted databases 页上,或者想要使用命令行显示已删除的数据库。

从已删除的 SQL 托管实例还原数据库

如果需要还原意外删除的 SQL 托管实例,请在删除作后的 5 天内联系Azure support团队。 请考虑以下事项:

  • 需要一个具有相同服务层级且 SLO 等于或更高的现有实例,用于替代已删除的实例。 准备好目标实例详细信息以提供支持。
  • 受客户管理的密钥(CMK)保护的加密数据库只能还原到有权访问同一密钥的实例。
  • 只能还原用户创建的数据库。 无法还原系统数据库。
  • 仅可使用删除操作之前创建的最后一次结尾日志备份,将实例还原到删除之前的最后一次时间点备份状态。

异地还原

重要

  • 异地还原仅适用于配置了异地冗余 备份存储的 SQL 托管实例。 如果当前没有对数据库使用异地复制的备份,可以通过配置备份存储冗余对此进行更改。
  • 只能对驻留在同一订阅中的托管实例执行异地还原。

当数据库因其托管区域发生事故而不可用时,异地还原是默认的恢复选项。 可以将数据库还原到任何其他区域的实例中。 可以从最新的异地复制备份还原任何Azure区域中任何托管实例上的数据库。 异地还原使用异地复制的备份作为源。 即使服务中断导致数据库或数据中心无法访问,也依然能够请求异地还原。

备份与在不同区域的 Azure Blob 上进行地域复制之间存在延迟。 因此,还原的数据库可能比原始数据库晚最多一个小时。 下图演示了如何从另一区域中的最后一个可用备份还原数据库。

插图显示跨区域还原数据库来进行异地还原。

在Azure门户中,可以将异地复制的备份还原到现有实例,或者创建新的托管实例并选择可用的异地还原备份。 新建的数据库包含地理恢复的备份数据。

若要还原到现有实例,请按照时间点还原中的步骤操作,并确保选择适当的源实例和目标实例以将数据库还原到预期实例。

若要使用 Azure 门户异地还原到新实例,请执行以下步骤:

  1. 转到新的Azure SQL托管实例。
  2. 选择“新建数据库”。
  3. 输入数据库名称。
  4. 在“数据源”下,选择适当的备份类型,然后输入数据源的详细信息。
  5. 从可用的异地还原备份列表中选择一个备份。

完成实例数据库创建流程后,其中将包含通过地理还原恢复的备份。

异地还原注意事项

异地还原是Azure SQL Managed Instance中提供的最基本灾难恢复解决方案。 它依赖于在次要(配对)区域中自动创建的异地复制备份。 下面是异地还原的一些注意事项:

  • 恢复点目标 (RPO) 最多为 1 小时。
  • 还原过程(恢复时间目标 - RTO)通常不会超过 12 小时,不过可能会根据数据库大小而有所不同,因此还原可能会超出此时间范围。
  • 次要(配对)区域是主要区域的Azure存储设置。 无法更改次要区域。
  • 由于填充新数据时存在滞后时间,因此新创建/还原的数据库在其他区域中可能不会立即显示为可还原。 如果客户看不到新数据库的备份,则应预计等待期最长为 24 小时。

必须承认,对于拥有相对较小的数据库且对业务并非非常重要的应用程序而言,异地还原是合适的灾难恢复解决方案。 对于需要大型数据库且必须确保业务连续性的业务关键型应用程序,请使用故障转移组。 该功能提供的 RPO 和 RTO 要低得多,并且始终可以保证容量。

有关业务连续性选项的详细信息,请参阅业务连续性概述

从不受信任的源还原备份的安全风险

本部分概述了将备份从不受信任的源还原到任何SQL Server环境(包括本地、Azure SQL Managed Instance、SQL Server on Azure Virtual Machines(VM)和其他任何环境相关的安全风险。

为什么这很重要

如果备份源自不受信任的源,则还原 SQL 备份文件 (.bak) 会带来潜在风险。 当SQL Server环境有多个实例时,安全风险进一步加剧,因为它放大了威胁区域。 虽然保留在受信任边界内的备份不会造成安全问题,但还原恶意备份可能会损害整个环境的安全性。

恶意 .bak 文件可以:

  • 接管整个SQL Server实例。
  • 提升特权并获取对基础主机或虚拟机的未经授权的访问。

此攻击发生在任何验证脚本或安全检查可以执行之前,这使得它变得极其危险。 还原不受信任的备份相当于在关键服务器或虚拟机上运行不受信任的应用程序,并将任意代码执行引入环境。

最佳做法

遵循以下备份安全最佳做法,减少对SQL Server环境的威胁:

  • 将备份还原视为高风险操作。
  • 使用独立实例减少威胁服务区域。
  • 仅允许受信任的备份:从不从未知源或外部源还原备份。
  • 仅允许在受信任的边界内保留的备份:确保备份源自受信任的边界。
  • 为方便起见,请勿绕过安全控制。
  • 启用 服务器级审核 以捕获备份和还原事件并缓解审核逃避。

限制

使用备份和Azure SQL Managed Instance时,请考虑以下限制:

  • 数据库的异地还原只能对与源 SQL 托管实例相同的订阅中的实例执行。
  • 默认情况下,Azure SQL Managed Instance数据库使用 TDE 加密。 当源数据库使用客户管理的密钥(CMK)作为 TDE 保护程序时,若要将数据库还原到源SQL Managed Instance以外的实例,目标实例必须有权访问用于加密Azure Key Vault中的源数据库的同一密钥,或者必须在备份之前禁用源数据库的 TDE 加密。
  • 只能使用 sys.dm_exec_requestssys.dm_operation_status 动态管理视图来跟踪还原过程的进度。
  • 恢复点目标 (RPO) 最多为 1 小时。
  • 恢复时间目标 (RTO) 大约为 12 小时,但可能根据数据库大小而有所不同,并且活动可能会超出此时间范围。
  • 无法更改次要(配对)区域。
  • 由于填充新数据时存在滞后时间,因此新创建/还原的数据库在其他区域中可能不会立即显示为可还原。 新数据库的备份可能需要长达 24 小时才能可见。
  • 可以并行还原的最大数据库数量为每订阅 200 个。 在某些情况下,可通过开具支持票证来增加此限制。
  • 数据库备份可以基于相同或更高版本的 更新策略还原到 SQL 托管实例:
  • 不支持从已启用 HNS 的 (ADLS Gen2) 帐户还原备份。