在 Azure 应用服务中备份和还原应用
在 Azure 应用服务中,可以轻松还原应用备份。 还可以按需进行自定义备份或配置计划的自定义备份。 可以通过还原到新应用或槽来覆盖现有应用以还原备份。 本文介绍如何还原备份并进行自定义备份。
基本、标准、高级和隔离层支持备份和还原。 对于基本层,只能备份和还原生产槽。 有关缩放应用服务计划以使用更高层的详细信息,请参阅增加 Azure 中的应用。
注意
对于应用服务环境:
- 自动备份可以还原到应用服务环境本身(而不是另一个应用服务环境)中的目标应用。
- 自定义备份可以恢复到另一个应用服务环境中的目标应用,例如从应用服务环境 v2 恢复到应用服务环境 v3。
- 备份可以还原到源应用所在的同一操作系统平台的目标应用。
备份和还原与灾难恢复
平台 | 备份和还原指南 | 灾难恢复指南 |
---|---|---|
应用服务 Web 应用 (免费和共享定价层) |
如果已将 Web 应用程序部署到免费层或共享层,并且需要访问这些 Web 应用的备份和还原功能,可纵向扩展到基本层或更高层。 | 在区域灾难期间在不同 Azure 区域中重新联机应用服务资源。 从 2025 年 3 月 31 日开始,在 Azure 区域发生灾难期间,应用服务应用程序将不会处于灾难恢复模式,如从区域范围故障中恢复一文中所述。 建议实施常用灾难恢复技术,以防止在区域灾难期间出现故障时间和数据丢失。 |
应用服务 Web 应用 (基本\标准\高级定价层) |
在 Azure 应用服务中,可以进行按需自定义备份或利用自动备份。 可以通过还原到新应用或槽来覆盖现有应用以还原备份。 有关详细信息,请参阅在 Azure 应用服务中备份和还原应用。 |
有关如何在发生区域灾难期间在不同的 Azure 区域中重新联机应用服务资源的最新指南,请参阅从区域范围故障中恢复 - Azure 应用服务。 从 2025 年 3 月 31 日开始,在 Azure 区域发生灾难期间,应用服务应用程序将不再处于灾难恢复模式,如从区域范围的故障中恢复一文中所述。 强烈建议实施常用灾难恢复方法,以防止发生区域性灾难时 Web 应用的功能或数据出现丢失。 |
应用服务环境(V2 和 V3) | 在 Azure 应用服务环境中,可以进行按需自定义备份或利用自动备份。 自动备份可以还原到同一 ASE(而不是其他 ASE)中的目标应用。 可将自定义备份还原到另一 ASE 中的目标应用(例如从 V2 ASE 还原到 V3 ASE)。 备份可以还原到源应用所在的同一操作系统平台的目标应用。 有关更多详细信息,请参阅在 Azure 应用服务中备份和还原应用。 |
我们鼓励使用常用灾难恢复技术为部署到应用服务环境的 Web 应用程序实施灾难恢复指导。 |
Azure Functions: 专用计划 |
在专用(应用服务)计划中运行函数应用时,所需的函数应用内容是使用内置存储来保留的。 在专用计划中,可以进行按需自定义备份或利用自动备份。 可以通过还原到新应用或槽来覆盖现有应用以还原备份。 有关详细信息,请参阅在 Azure 应用服务中备份和还原应用。 专用计划不使用 Azure 文件存储,但如果为应用错误地配置了 Azure 文件存储连接,则备份不受支持。 |
有关如何在发生区域灾难期间使专用计划中的函数应用资源在另一个 Azure 区域中重新联机的最新指南,请参阅从区域范围的故障中恢复 - Azure 应用服务。 从 2025 年 3 月 31 日开始,在 Azure 区域发生灾难期间,应用服务应用程序将不会处于灾难恢复模式,如从区域范围故障中恢复一文中所述。 应改为规划函数应用的可靠性。 还可以参考专用计划中函数应用的常用灾难恢复技术。 |
Azure Functions: 弹性消耗计划、 消耗计划和高级计划 |
在弹性消耗计划、消耗计划或高级计划中运行的函数应用无法使用应用服务中的自定义和自动备份功能。 在这些动态缩放计划中,函数应用内容是在 Azure 存储中保留的。 使用 Azure 存储冗余选项来确保存储帐户在服务中断期间满足其可用性和持久性目标。 还可以从 Azure 门户将现有函数应用项目下载为 .zip 文件。 |
强烈建议你规划函数应用的可靠性。 |
自动备份与自定义备份
应用服务中有两种类型的备份。 只要应用处于受支持的定价层,就会定期为应用进行自动备份。 自定义备份需要初始配置,并且可以按需或按计划进行。 下表显示了这两个类型之间的差别。
功能 | 自动备份 | 自定义备份 |
---|---|---|
定价层 | 基本、标准、高级、独立。 | 基本、标准、高级、独立。 |
需要进行配置 | 否。 | 是的。 |
备份大小 | 30 GB。 | 10 GB,其中 4 GB 可以是链接的数据库。 |
链接的数据库 | 未备份。 | 可以备份以下链接的数据库:SQL 数据库、Azure Database for MySQL、Azure Database for PostgreSQL、MySQL in-app。 |
需要存储帐户 | 否。 | 是的。 |
备份频率 | 每小时,不可配置。 | 可配置。 |
保留 | 30 天,不可配置。 - 第 1-3 天:保留每小时备份。 - 第 4-14 天:每隔三小时备份保留一次。 - 第 15-30 天:每隔六小时备份保留一次。 |
0-30 天或无限期。 |
可下载 | 不是。 | 是的,作为 Azure 存储 Blob。 |
部分备份 | 不支持。 | 。 |
通过 VNet 进行备份 | 不支持。 | 支持。 |
还原备份
创建自定义备份
在 Azure 门户应用管理页的左侧菜单中,选择“备份”。
在“备份”页顶部,选择“配置自定义备份”。
在“存储帐户”中,选择现有存储帐户(同一订阅中)或选择“新建”。 对“容器”执行相同操作。
要备份链接的数据库,请选择“下一步:高级”>“包含数据库”,然后选择要备份的数据库。
注意
若要使支持的数据库显示在此列表中,其连接字符串必须位于应用“配置”页的“连接字符串”部分中。
应用内 MySQL 数据库无需任何配置即可备份。 如果对应用内 MySQL 数据库进行手动设置,例如添加连接字符串,则备份可能无法正常工作。
选择 配置。
配置存储帐户和容器后,可随时启动按需备份。 按需备份会无限期保留。
在“备份”页顶部,选择“立即备份”。
自定义备份显示在列表中,其中包含进度指示器。 如果失败并出现错误,可以选择行项以查看错误消息。
配置自定义计划备份
在“配置自定义备份”页中,选择“设置计划”。
根据需要配置备份计划,并选择“配置”。
备份和还原链接数据库
自定义备份可以包含关联的数据库(除非通过 Azure 虚拟网络配置备份)。 若要确保备份包含链接数据库,请执行以下操作:
- 确保链接数据库受支持。
- 创建指向数据库的连接字符串。 如果应用的配置中存在某个数据库的有效连接字符串,则该数据库被视为“已链接”到该应用。
- 按照创建自定义备份中的步骤,在“高级”选项卡中选择链接数据库。
若要还原自定义备份中包含的数据库,请执行以下操作:
- 按照还原备份中的步骤操作。
- 在“高级选项”中,选择“包括数据库”。
有关故障排除信息,请参阅为何未备份我的链接数据库。
通过 Azure 虚拟网络进行备份和还原
使用自定义备份时,如果满足以下要求,就可以将应用的文件和配置数据备份到受防火墙保护的存储帐户:
- 应用与虚拟网络集成,或者应用位于 v3 应用服务环境中。
- 存储帐户允许从应用与之集成或用于创建 v3 应用服务环境的虚拟网络授予访问权限。
若要通过 Azure 虚拟网络进行备份和还原,请执行以下操作:
- 配置自定义备份时,请选择“通过虚拟网络集成进行备份/还原”。
- 选择“配置”,以保存设置。
如果没有看到该复选框,或者该复选框已禁用,请验证资源是否满足要求。
保存配置后,任何手动、计划的备份或还原都通过虚拟网络进行。 如果对应用、虚拟网络或存储帐户进行了更改,导致应用无法通过虚拟网络访问存储帐户,则备份或还原操作将失败。
配置部分备份
自定义备份支持部分备份(自动备份不支持部分备份)。 有时你不想备份应用中的所有内容。 以下是一些示例:
- 设置每周备份应用,其中包含永远不会更改的静态内容,例如旧的博客文章或图像。
- 应用的内容超过 10 GB(这是一次可以备份的最大量)。
- 不想备份日志文件。
若要排除存储在将来的备份中的文件夹和文件,请在应用的 %HOME%\site\wwwroot
文件夹中创建一个 _backup.filter
文件。 指定要在此文件中排除的文件和文件夹列表。
提示
可以通过导航到 https://<app-name>.scm.chinacloudsites.cn/DebugConsole
来访问文件。 如果出现系统提示,请登录到你的 Azure 帐户。
确定要从备份中排除的文件夹。 例如,筛选出突出显示的文件夹和文件。
创建名为 _backup.filter
的文件并将上述列表放在文件中,但删除根 %HOME%
。 每行列出一个目录或文件。 文件的内容应为:
\site\wwwroot\Images\brand.png
\site\wwwroot\Images\2014
\site\wwwroot\Images\2013
使用 ftp 或任何其他方法,将 _backup.filter
文件上传到站点的 D:\home\site\wwwroot\
目录。 如果需要,可使用 Kudu DebugConsole
直接创建此文件,并在其中插入内容。
像往常一样运行备份,自定义或自定义。 _backup.filter
中指定的所有文件和文件夹都会从将来备份中排除。
注意
_backup.filter
更改还原的工作方式。 如果没有 _backup.filter
,还原备份会删除应用中的所有现有文件,并将其替换为备份中的文件。 使用 _backup.filter
时,应用文件系统中包含在 _backup.filter
中的任何内容都保留原样(不删除)。
如何存储备份
对应用进行一次或多次备份后,可在存储帐户的“容器”页中看到备份以及应用。 在存储帐户中,每个备份都由一个 .zip
文件和一个 .xml
文件组成,前者包含备份数据,后者包含 .zip
文件内容的清单。 如果想要在无需实际执行应用还原的情况下访问备份,则可以解压缩并浏览这些文件。
应用的数据库备份存储在 .zip 文件的根目录中。 对于 SQL 数据库,这是 BACPAC 文件(无文件扩展名),并且可以导入。 若要基于 BACPAC 导出在 Azure SQL 数据库中创建数据库,请参阅导入 BACPAC 文件以在 Azure SQL 数据库中创建数据库。
警告
改动 websitebackups 容器中的任何文件都导致备份无效,进而无法还原。
Error messages
“备份”页显示每个备份的状态。 若要获取有关失败备份的日志详细信息,请选择列表中的行项。 使用下表来帮助排查备份问题。 如果该表中未提到这种失败,请提交支持票证。
错误 | Fix |
---|---|
存储访问失败。 | 删除备份计划,然后重新配置。 或者重新配置备份存储。 |
网站和数据库的合计大小超过了备份限制 ({0} GB)。 内容大小为 {1} GB。 | 从备份中排除某些文件,或删除备份的数据库部分,并改用外部提供的备份。 |
连接到服务器 {1} 上的数据库 {0} 时出错: 使用方法“mysql_native_password”在主机“{1}”中对用户“<用户名>”进行身份验证失败并出现以下消息: 未知的数据库“<db-name>” | 更新数据库连接字符串。 |
无法解析 {0}。 {1} (CannotResolveStorageAccount) | 删除备份计划,然后重新配置。 |
用户“{0}”登录失败。 | 更新数据库连接字符串。 |
创建 {0} 数据库副本({1})引发了异常。 无法创建数据库副本。 | 在连接字符串中使用管理用户。 |
服务器主体“<名称>”无法在当前安全上下文下访问数据库“master”。 无法打开登录名请求的数据库 "master"。 登录失败。 用户“<名称>”登录失败。 | 在连接字符串中使用管理用户。 |
建立与 SQL Server 的连接时,出现网络相关或特定于实例的错误。 找不到或无法访问服务器。 请验证实例名称是否正确,SQL Server 是否已配置为允许远程连接。 (提供程序:命名管道提供程序,错误: 40 - 无法打开到 SQL Server 的连接)。 | 检查连接字符串是否有效。 在数据库服务器设置中允许应用的出站 IP。 |
无法打开登录时请求的服务器“<名称>”。 登录失败。 | 检查连接字符串是否有效。 |
缺少有效共享访问签名的必需参数。 | 删除备份计划,然后重新配置。 |
需要 SSL 连接。 指定 SSL 选项,并在尝试连接时重试。 | 数据库备份不支持与 Azure Database for MySQL 和 Azure Database for PostgreSQL 的 SSL 连接。 请改用相应数据库中的本机备份功能。 |
使用脚本自动化
可以在 Azure CLI 或 Azure PowerShell 中使用脚本自动备份管理。
相关示例如下所示:
常见问题
- 备份是增量更新还是完整备份?
- Azure Functions 是否支持自动备份?
- 自动备份中包含哪些内容?
- 自定义备份中包含哪些内容?
- 为什么我的链接数据库未备份?
- 如果备份大小超过允许的最大大小,会发生什么情况?
- 是否可以使用启用了安全功能的存储帐户?
- 如何还原到其他订阅中的应用?
- 如何还原到位于同一订阅但位于不同区域中的应用?
- 自动备份存储在哪里?
- 如何停止自动备份?
备份是增量更新还是完整备份?
每个备份都是应用的完整脱机副本,而不是增量更新。
Azure Functions 是否支持自动备份?
自动备份适用于专用(应用服务)基本、标准或高级层中的 Azure Functions。 自动备份不支持消耗层或弹性高级定价层中的函数应用。
自动备份中包含哪些内容?
下表显示了自动备份中备份的内容:
设置 | 已还原? |
---|---|
Windows 应用:%HOME% 目录下的所有应用内容Linux 应用: /home 目录下的所有应用内容自定义容器(Windows 和 Linux):永久性存储中的内容 |
是 |
run-from-ZIP 包的内容 | 否 |
来自任何自定义装载的 Azure 存储(例如 Azure 文件共享)的内容。 | 否 |
下表显示了选择还原应用配置时还原的应用配置:
设置 | 已还原? |
---|---|
原生日志设置,包括 Azure 存储帐户和容器设置 | 是 |
Application Insights 配置 | 是 |
运行状况检查 | 是 |
网络功能,例如专用终结点、混合连接和虚拟网络集成 | 否 |
身份验证 | 否 |
托管标识 | 否 |
自定义域 | 否 |
TLS/SSL | 否 |
横向扩展 | 否 |
Azure Monitor 的诊断 | 否 |
警报和指标 | 否 |
备份 | 否 |
关联的部署槽位 | 否 |
自定义备份支持的任何链接数据库 | 否 |
自定义备份中包含哪些内容?
自定义备份(按需备份或计划备份)包括自动备份中包含的所有内容和配置,以及任何链接的数据库,高达允许的最大大小。
为什么我的链接数据库未备份?
链接的数据库仅针对自定义备份进行备份,高达允许的最大大小。 如果超过最大备份大小 (10 GB) 或超过最大数据库大小 (4 GB),则备份会失败。 下面是链接数据库未备份的一些常见原因:
- 不支持备份启用了 TLS 的 Azure Database for MySQL。 如果已配置备份,备份将失败。
- 不支持备份启用了 TLS 的 Azure Database for PostgreSQL。 如果已配置备份,备份将失败。
- 应用内 MySQL 数据库无需任何配置即可自动备份。 如果对应用内 MySQL 数据库进行手动设置,例如添加连接字符串,则备份可能无法正常工作。
如果备份大小超过允许的最大值,会发生什么情况?
如果备份大小超过最大大小,则无法还原自动备份。 同样,如果超出最大备份大小或最大数据库大小,则自定义备份会失败。 例如,若要减小存储大小,请考虑将日志、图像、音频和视频等文件移动到 Azure 存储。
是否可以使用启用了安全功能的存储帐户?
如果受防火墙保护的存储帐户与应用属于同一虚拟网络拓扑,则可以备份到该存储帐户。 请参阅通过 Azure 虚拟网络进行备份和还原。
如何还原到其他订阅中的应用?
- 对 Azure 存储容器进行自定义备份。
- 将备份 ZIP 文件下载到本地计算机。
- 在目标应用的“备份”页中,选择顶部菜单中的“还原”。
- 在“备份详细信息”中,选择“源”中的“存储”。
- 选择首选存储帐户。
- 在“Zip 文件”中,选择“上传文件”。
- 在“名称”中,选择“浏览”,然后选择下载的 ZIP 文件。
- 配置其余部分,例如在还原备份中。
如何还原到位于同一订阅但位于不同区域中的应用?
步骤与如何还原到不同订阅中的应用相同。
自动备份存储在哪里?
自动备份很简单,与应用服务存储在同一数据中心,不应作为灾难恢复计划依赖。
如何停止自动备份?
无法停止自动备份。 自动备份存储在平台上,对基础应用实例或其存储没有影响。