在 Azure 应用服务中备份和还原应用

重要

2028 年 3 月 31 日起,Azure 应用服务自定义备份 将不再支持备份链接的数据库。 有关详细信息,请参阅 弃用链接的数据库备份

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

基本层、标准层、高级层和独立层支持备份和还原。 对于基本层,只能备份和还原生产槽。 有关缩放应用服务计划以使用更高层的详细信息,请参阅增加 Azure 中的应用

自动备份与自定义备份

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

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

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

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

15-30 天:每 6 小时保留一次备份。
0-30 天或无限期。
可下载 否。 是,作为 Azure 存储 Blob。
部分备份 不支持。 支持。
通过虚拟网络备份 不支持。 支持。

还原备份

备注

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

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

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

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

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

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

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

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

  6. 选择“还原”。

创建自定义备份

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

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

  3. 存储帐户中,选择同一订阅中的现有存储帐户,或选择“ 新建”。 在 容器中重复。

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

    备注

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

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

  4. 选择“配置” 。

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

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

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

配置自定义计划备份

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

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

备份和还原链接数据库

备注

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

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

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

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

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

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

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

弃用链接的数据库备份

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

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

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

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

  • 应用与虚拟网络集成,或者应用位于 v3 应用服务环境中。
  • 存储帐户允许访问与应用程序集成的虚拟网络,或用于创建 v3 应用服务环境的虚拟网络。

若要通过 Azure 虚拟网络进行备份和还原,请执行以下操作:

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

若要通过虚拟网络为部署槽启用备份/还原,请完成每个槽所需的步骤:

  • 为部署插槽启用了虚拟网络集成,或者该插槽位于 v3 应用服务环境 中。
  • 为部署槽选择通过虚拟网络集成进行备份/还原的选项。

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

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

配置部分备份

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

  • 设置包含永不更改的静态内容的应用的 每周备份 (例如,旧的博客文章或图像)。
  • 你的应用的内容超过 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 任何内容都保留为原样(未删除)。

备份如何存储

对应用进行一次或多次备份后,可在存储帐户的“容器”页中看到备份以及应用。 在存储帐户中,每个备份都包含一个 ZIP 文件,其中包含备份数据和包含 ZIP 文件内容的清单的 XML 文件。 如果想要在无需实际执行应用还原的情况下访问备份,则可以解压缩并浏览这些文件。

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

警告

更改容器中的任何 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>”。 登录失败。 确保连接字符串有效。
缺少有效共享访问签名的必需参数。 删除备份计划,然后重新配置。
需要 SSL 连接。 指定 SSL 选项,并在尝试连接时重试。 数据库备份不支持与 Azure Database for MySQL 和 Azure Database for PostgreSQL 的 SSL 连接。 请改用相应数据库中的本机备份功能。

应用服务环境中的备份和还原如何工作?

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

使用脚本自动化

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

相关示例如下所示:

常见问题解答

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

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

Azure Functions 是否支持自动备份?

自动备份适用于 专用(应用服务) 基本层、标准层和高级层中的 Azure Functions。 消费定价层或弹性优质定价层中的函数应用不支持自动备份。

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

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

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

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

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

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

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

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

备注

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

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

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

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

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

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

如果受防火墙保护的存储帐户与应用属于同一虚拟网络拓扑,则可以备份到该存储帐户。 请参阅通过 Azure 虚拟网络进行备份和还原

如何恢复到不同订阅中的应用程序?

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

如何还原到同一订阅中但位于不同区域中的应用?

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

自动备份存储在哪里?

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

如何停止自动备份?

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