Compartilhar via

在 Azure App Service 中备份和还原应用

重要

3/31/2028 开始,Azure App Service自定义备份将不再支持备份链接数据库。 有关详细信息,请参阅 弃用链接的数据库备份

Azure App Service 中,可以轻松还原应用备份。 还可以按需进行自定义备份或配置计划的自定义备份。 可以通过覆盖现有应用或恢复到新的应用或插槽来还原备份。 本文介绍如何还原备份并进行自定义备份。

基本层、标准层、高级层和独立层支持备份和还原。 对于基本层,只能备份和还原生产槽。 有关将应用服务计划扩展到更高级别的更多信息,请参阅在 Azure 中纵向扩展应用程序

自动备份与自定义备份

App Service中有两种类型的备份。 如果应用处于受支持的定价层,则定期创建自动备份。 自定义备份需要初始配置,并且可以按需或按计划进行。 下表显示了这两个类型之间的差别。

功能 自动备份 自定义备份
定价等级 基本、标准、高级、独立。 基本、标准、高级、独立。
需要进行配置 否。 是的。
备份大小 30 GB。 10 GB,其中 4 GB 可以是链接的数据库。
链接的数据库 未备份。 可以备份以下链接数据库:SQL 数据库Azure Database for MySQLAzure Database for PostgreSQLMySQL 应用内。 。 请注意,自定义备份不支持 Azure DB for MySQL - Flexible Server 和 Azure DB for PostgreSQL - Flexible Server
需要 存储帐户 否。 是的。
备份频率 每小时,不可配置。 可配置(至少每 2 小时,每天最多 12 个备份(手动 + 计划)。
保留 30 天,不可配置。

1-3 天:每小时保留一次备份。

4-14 天:每 3 小时保留一次备份。

15-30 天:每 6 小时保留一次备份。
0-30 天或无限期。
可下载 否。 可以,如Azure Storage blob 一样。
部分备份 不支持。 支持。
通过虚拟网络备份 不支持。 支持。

还原备份

注意

应用服务在还原备份时会停止目标应用或目标部署槽。 若要最大程度地减少生产应用的停机时间,请先将备份还原到 部署槽位,然后 切换 到生产环境。

  1. Azure portal的应用管理窗格中,选择左侧菜单上的Backups。 “ 备份 ”页列出了应用的所有自动和自定义备份,并显示每个备份的状态。

    显示如何打开“备份”页的屏幕截图。

  2. 选择要还原的自动备份或自定义备份。 选择其还原链接。

  3. “备份详细信息”部分会由系统自动填充。

  4. 在“选择目标”中指定还原目标。 若要还原到新应用,请在App Service框下选择Create new。 若要还原到新的部署槽位,请选择“部署槽位”框下的“新建”。

    如果选定一个现有插槽,则会清除并覆盖其文件系统中的所有现有数据。 生产槽的名称与应用名称相同。

  5. 可以在 “高级”选项下还原站点配置。

  6. 选择“还原”。

创建自定义备份

  1. 转到 Azure portal 中的应用管理窗格。 在左侧菜单中,选择“ 备份”。

  2. 在“备份”页顶部,选择“配置自定义备份”。

  3. Storage 帐户中,选择同一订阅中的现有storage帐户,或选择 创建新的。 在 容器中重复。

    要备份链接的数据库,请选择“下一步:高级”>“包含数据库”,然后选择要备份的数据库。

    注意

    仅当其连接字符串存在于应用的 连接字符串 部分的 配置 页面中时,支持的数据库才会出现在此列表中。

    应用内 MySQL 数据库无需任何配置即可备份。 如果手动为应用内 MySQL 数据库创建设置,例如添加连接字符串,则备份可能无法正常工作。

  4. 选择“配置” 。

    配置storage帐户和容器后,可以随时启动按需备份。 按需备份会无限期保留。

  5. 在“ 备份 ”窗格顶部,选择“ 立即备份”。

    自定义备份显示在列表中,其中包含进度指示器。 如果失败并出现错误,可以选择行项以查看错误消息。

配置自定义计划备份

  1. 在“ 配置自定义备份 ”窗格中,选择“ 设置计划”。

  2. 根据需要配置备份计划,然后选择“配置”

备份和还原链接数据库

注意

使用链接数据库的自定义备份,App Service仅支持Azure Database for MySQL和PostgreSQL的单一服务器层。 由于单服务器层即将停用,因此将链接的数据库升级到灵活服务器可能会导致备份失败。 使用本机数据库备份工具防止数据丢失。 独立 MySQL 和 PostgreSQL 服务器(例如,VM 上的服务器)不受单服务器层停用的影响。 有关停用详细信息,请参阅 MySQL 单一服务器停用PostgreSQL 单一服务器停用

有关灵活服务器的备份和还原,请参阅相应的数据库文档:

自定义备份可以包含链接的数据库(除非通过Azure Virtual Network配置备份)。 若要确保备份包含链接的数据库,请执行以下步骤:

  1. 确保链接数据库受支持
  2. 创建一个指向您数据库的连接字符串。 当应用配置中存在有效的connection string时,数据库被视为“已链接到你的应用”。
  3. 按照创建自定义备份中的步骤,在“高级”选项卡中选择链接数据库。

若要还原自定义备份中包含的数据库,请执行以下作:

  1. 按照还原备份中的步骤操作。
  2. 在“高级选项”中,选择“包括数据库”。

有关故障排除信息,请参阅 为什么我的链接数据库未备份?

弃用链接的数据库备份

3/31/2028 开始,Azure App Service自定义备份将不再支持备份链接数据库。 我们建议改用每个数据库服务提供的本机备份和还原工具。 为了帮助用户准备此更改,App Service团队将根据以下计划删除在新的自定义备份配置中包含链接数据库的选项:

  • 2025 年 11 月 - 删除链接的 MySQLPostgreSQL 数据库
  • 2026年4月Azure SQLSQL Server数据库的自定义备份中删除链接数据库。对于已包含链接数据库的自定义备份,将继续备份这些数据库,直至 2028年3月31日,之后不再包含链接数据库。

备份和还原 Azure 虚拟网络

如果满足以下要求,您可以使用自定义备份,将应用的文件和配置数据备份到受防火墙保护的存储帐户:

若要通过 Azure 虚拟网络进行备份和还原:

  1. 配置 自定义备份时,请选择 通过虚拟网络集成进行备份/恢复
  2. 选择“ 配置 ”以保存设置。

若要在部署插槽的虚拟网络上启用备份/还原,请专门针对每个插槽完成必要步骤。

  • 为部署槽启用虚拟网络集成,或者槽位于 v3 App Service Environment 中。
  • 选择在部署插槽中通过虚拟网络集成进行备份/还原的选项。

如果没有看到该复选框,或者该复选框已禁用,请验证资源是否满足要求。

保存配置后,任何手动备份、计划备份或还原都将通过虚拟网络进行。 如果您对应用程序、虚拟网络或存储账户进行更改,导致应用程序无法通过虚拟网络访问存储账户,则备份或还原操作将失败。

配置部分备份

自定义备份支持部分备份,但自动备份不支持部分备份。 有时你不想备份应用中的所有内容。 以下是一些示例:

  • 设置包含永不更改的静态内容的应用的 每周备份 (例如,旧的博客文章或图像)。
  • 你的应用的内容超过 10 GB。 (这是一次可以备份的最大金额。
  • 不想备份日志文件。

若要排除存储在将来的备份中的文件夹和文件,请在应用的 _backup.filter中创建一个 %HOME%\site\wwwroot 文件。 指定要在此文件中排除的文件和文件夹列表。

提示

可以通过导航到https://<app-name>.scm.chinacloudsites.cn/DebugConsole来访问文件。 如果系统提示,请登录到Azure帐户。

确定要从备份中排除的文件夹。 例如,假设你要筛选出突出显示的文件夹和文件。

显示要从备份中排除的文件和文件夹的屏幕截图。

创建名为 _backup.filter 的文件并将上述列表放在文件中,但删除根 %HOME%。 每行列出一个目录或文件。 文件的内容应为:

\site\wwwroot\Images\brand.png
\site\wwwroot\Images\2014
\site\wwwroot\Images\2013

使用 _backup.filter 或任何其他方法,将 D:\home\site\wwwroot\ 文件上传到站点的 目录。 如果需要,可使用 Kudu DebugConsole 直接创建此文件,并在其中插入内容。

按正常方式运行备份: 自定义按需 备份或 自定义计划备份。 _backup.filter 中指定的所有文件和文件夹都会从将来备份中排除。

注意

_backup.filter 会改变还原的工作方式。 如果没有 _backup.filter,还原备份会删除应用中的所有现有文件,并将其替换为备份中的文件。 使用 _backup.filter时,应用文件系统中包含的 _backup.filter 任何内容都保留为原样(未删除)。

备份如何存储

为应用创建一个或多个备份后,备份将显示在storage帐户和应用的 Containers 页上。 在storage帐户中,每个备份都包含一个 ZIP 文件,其中包含备份数据和包含 ZIP 文件内容的清单的 XML 文件。 如果要access备份而不实际执行应用还原,可以解压缩并浏览这些文件。

应用的数据库备份存储在 .zip 文件的根目录中。 对于 SQL 数据库,这是 BACPAC 文件(无文件扩展名),并且可以导入。 若要基于 BACPAC 导出在 Azure SQL Database 中创建数据库,请参阅 将 BACPAC 文件导入到 Azure SQL Database 中创建数据库。

警告

更改容器中的任何 websitebackups 文件可能会导致备份无效且不可还原。

错误信息

“备份”页显示每个备份的状态。 若要获取有关失败备份的日志详细信息,请选择列表中的行项。 使用下表来帮助排查备份问题。 如果该表中未提到这种失败,请提交支持工单。

错误 修复
存储访问失败。 删除并重新配置备份计划,或重新配置备份存储。
网站和数据库大小超过 {0} 备份的 GB 限制。 内容大小为 {1} GB。 从备份中排除某些文件,或删除备份的数据库部分,并改用外部提供的备份。
连接到服务器 {0} 上的数据库 {1} 时出错:使用方法 {1} 对主机 \<username> 进行用户 mysql_native_password 的身份验证失败,并显示消息:未知数据库 \<db-name> 更新数据库连接字符串。
无法解析 {0}{1}CannotResolveStorageAccount 删除备份计划,然后重新配置。
用户 {0} 登录失败。 更新数据库连接字符串。
创建数据库副本{0}({1})时发生异常。 无法创建数据库副本。 在连接字符串中使用管理用户。
服务器主体"\<name>"无法在当前安全上下文下访问数据库“master”。 登录请求的数据库 "master" 无法打开。 登录失败。 用户 \<name> 登录失败。 请在连接字符串中使用管理员用户。
建立与SQL Server的连接时发生与网络相关的或特定于实例的错误。 找不到或无法访问服务器。 验证实例名称是否正确,并且是否已将SQL Server配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)。 确保连接字符串有效。 在数据库服务器设置中允许应用的出站 IP
无法打开登录请求的服务器“\<name>”。 登录失败。 确保连接字符串的有效性。
缺少有效共享Access签名的必需参数。 删除备份计划,然后重新配置。
需要 SSL 连接。 指定 SSL 选项,并在尝试连接时重试。 数据库备份不支持与Azure Database for MySQL和Azure Database for PostgreSQL的 SSL 连接。 请改用相应数据库中的本机备份功能。

App Service 环境中的备份和还原是如何工作的?

  • 自动备份可以还原到同一应用服务环境内部的目标应用,不能在其他应用服务环境中。
  • 自定义备份可以还原到另一个App Service Environment中的目标应用,例如从 App Service Environment v2 还原到 App Service Environment v3。
  • 备份可以还原到源应用所在的同一操作系统平台的目标应用。

使用脚本自动化

可以使用 Azure CLIAzure PowerShell 通过脚本自动化管理备份。

相关示例如下所示:

常见问题解答

备份是增量更新还是完整备份?

每个备份都是应用的完整脱机副本,而不是增量更新。

Azure Functions是否支持自动备份?

自动备份适用于 Azure Functions 在 Dedicated(专用应用服务) 的基本层、标准层和高级层中。 ConsumptionElastic Premium 定价层中的函数应用不支持自动备份。

自动备份中包含哪些内容?

下表显示了自动备份中备份的内容:

内容 已还原?
Windows 应用%HOME% 目录下的所有应用内容。
Linux 应用/home 目录下的所有应用内容。
Custom 容器(Windows 和 Linux)持久存储 中的内容。
run-from-ZIP 包中的内容。
来自任何 自定义装载的 Azure 存储的内容,例如来自 Azure Files 共享。

下表显示了选择还原应用配置时还原的应用配置:

设置 已还原?
本地日志设置,包括 Azure Storage 帐户和容器设置
Application Insights 配置
健康检查
网络功能,如 私有终结点混合连接虚拟网络集成
身份验证
托管标识
自定义域
TLS/SSL
横向扩展
使用 Azure Monitor 进行 诊断
告警和指标
备份
关联的部署槽
自定义备份支持的任何链接数据库

自定义备份中包含哪些内容?

自定义备份(按需备份或计划备份)包括自动备份中包含的所有内容和配置,以及任何链接的数据库,高达允许的最大大小。

为什么我的链接数据库未备份?

注意

使用链接数据库的自定义备份,App Service仅支持Azure Database for MySQL和PostgreSQL的单一服务器层。 由于单服务器层即将停用,因此将链接的数据库升级到灵活服务器可能会导致备份失败。 使用本机数据库备份工具防止数据丢失。 独立 MySQL 和 PostgreSQL 服务器(例如,VM 上的服务器)不受单服务器层停用的影响。 有关停用详细信息,请参阅 MySQL 单一服务器停用PostgreSQL 单一服务器停用

有关灵活服务器的备份和还原,请参阅相应的数据库文档:

链接数据库只针对自定义备份进行备份,大小不超过允许的最大限度。 如果超过最大备份大小 (10 GB) 或超过最大数据库大小 (4 GB),则备份会失败。 下面是链接数据库未备份的一些常见原因:

  • 不支持备份已启用 TLS 的 Azure Database for MySQL。 如果已配置备份,可能会出现备份失败。
  • 不支持备份已启用 TLS 的 Azure Database for PostgreSQL。 如果已配置备份,可能会出现备份失败。
  • 应用内 MySQL 数据库无需任何配置即可自动备份。 如果对应用内 MySQL 数据库进行手动设置,例如添加连接字符串,则备份可能无法正常工作。

如果备份大小超过允许的最大值,会发生什么情况?

如果备份大小超过最大大小,则无法还原自动备份。 同样,如果超出最大备份大小或最大数据库大小,则自定义备份会失败。 若要减小storage大小,请考虑将日志、图像、音频和视频等文件移动到Azure Storage,例如。

是否可以使用启用了安全功能的存储账户?

如果它是与应用相同虚拟网络拓扑的一部分,则可以将数据备份到经过防火墙保护的存储帐户。 请参阅 在 Azure 虚拟网络上进行备份和还原

如何将应用还原到其他订阅中?

  1. 将源应用自定义备份到Azure Storage容器。
  2. 将备份 ZIP 文件和 XML 元数据文件加载到本地计算机。
  3. 将 ZIP 和 XML 文件上传到目标storage帐户。
  4. 在目标应用的 “备份 ”页中,单击顶部菜单中的 “还原 ”。
  5. Backup 详细信息部分中,选择 Storage 作为 Source。 选择上传备份文件的 storage 帐户
  6. 单击使用存储账户中的文件,然后选择要还原的 ZIP 文件
  7. 配置还原备份一节中所述的剩余设置。 确认并启动还原过程。

如何在同一订阅中恢复到位于不同区域的应用?

可以将应用还原到同一订阅中的不同区域。 此过程遵循 还原备份中概述的相同步骤。 确保目标应用可以访问源应用的备份存储。 Azure portal中的还原过程允许选择不同区域中的应用,只要它保留在同一订阅中。

自动备份存储在哪里?

自动备份存储在与App Service相同的数据中心。 建议不要依赖自动备份作为灾难恢复计划。

停止自动备份的方法是什么?

无法停止自动备份。 自动备份存储在平台上,对底层应用实例或其存储没有影响。