SQL Server 托管备份到 Azure

SQL Server 托管备份至 Microsoft Azure 负责管理和自动化 SQL Server 到 Azure Blob 存储服务的备份过程。 SQL Server 托管备份用于 Microsoft Azure 的备份策略是基于数据库的保留期和事务工作负载。 SQL Server 托管备份到 Microsoft Azure 支持在指定的保留时间段内进行时间点还原。
可以在数据库级别或实例级别启用到 Microsoft Azure 的 SQL Server 托管备份,以管理 SQL Server 实例上的所有数据库。 SQL Server 可以在本地或托管环境中运行,例如 Azure 虚拟机。 对于在 Azure 虚拟机上运行的 SQL Server,建议将 SQL Server 托管备份到 Microsoft Azure。

使用 SQL Server 托管备份将 SQL Server 备份自动化到 Microsoft Azure 的好处

  • 目前,为多个数据库自动执行备份需要制定备份策略、编写自定义代码和计划备份。 使用 SQL Server 托管备份到 Microsoft Azure,您只需提供保留期设置和存储位置。 SQL Server 托管备份到 Microsoft Azure 安排、执行和维护备份。

    SQL Server 托管备份到 Microsoft Azure 可以在数据库级别进行配置,也可以在配置 SQL Server 实例的默认设置时进行配置。 自动化备份使用 SQL Server 托管备份至 Microsoft Azure 具有以下优势:

    • 通过在实例级别设置默认值,可以将这些设置应用到此后创建的任何数据库,从而消除新数据库未备份和数据丢失的风险。

    • 启用 SQL Server 托管备份到 Microsoft Azure,并在数据库级别设置保留期的选项,允许您覆盖在实例级别设置的默认设置。 这样,你可以更精细地控制特定数据库的可恢复性。

  • 使用 SQL Server 托管备份到 Microsoft Azure,无需指定数据库备份的类型或频率。 您可以指定保留期,SQL Server 托管备份到 Microsoft Azure 会确定数据库备份的类型和频率,并将备份存储在 Azure Blob 存储服务上。 有关 SQL Server 托管备份到 Microsoft Azure 用于创建备份策略的条件集的更多详细信息,请参阅本主题中的 “组件和概念 ”部分。

  • 配置为使用加密时,备份数据具有额外的安全性。 有关详细信息,请参阅 备份加密

有关使用 Azure Blob 存储进行 SQL Server 备份的好处的更多详细信息,请参阅 使用 Azure Blob 存储服务进行 SQL Server 备份和还原

术语和定义

将 SQL Server 托管备份到 Microsoft Azure

SQL Server 功能,可自动执行数据库备份,并根据保留期维护备份。

保留期
SQL Server 托管备份到 Microsoft Azure 使用保留期来确定应在存储中保留哪些备份文件,以便在指定的时间框架内将数据库恢复到某个时间点。 支持的值为 1-30 天。

日志记录链
连续的日志备份序列称为日志链。 日志链从数据库的完整备份开始。

要求、概念和组件

权限

Transact-SQL 是用于配置和监视 SQL Server 托管备份到 Microsoft Azure 上的主接口。 一般情况下,若要运行配置存储过程, db_backupoperator 具有 ALTER ANY CREDENTIAL 权限的数据库角色,并且 EXECUTE 需要对 sp_delete_backuphistory 存储过程拥有权限。 用于查看信息的存储过程通常需要Execute权限,而函数则需要Select权限。

先决条件

先决条件

SQL Server 托管备份使用 Microsoft Azure 存储服务 将备份文件存储到 Microsoft Azure。 在“SQL Server 备份到 URL”主题的“关键组件和概念”部分,详细解释了创建 Azure 存储帐户的概念、结构和要求。

SQL 凭据 用于存储向 Azure 存储帐户进行身份验证所需的信息。 SQL 凭据对象存储帐户名称和访问密钥信息。 有关详细信息,请参阅 SQL Server 备份到 URL 主题中的“关键组件和概念简介”部分。 有关如何创建用于存储 Azure 存储身份验证信息的 SQL 凭据的演练,请参阅 第 2 课:创建 SQL Server 凭据

概念和关键组件

SQL Server 的管理式备份到 Microsoft Azure 是一项管理备份操作的功能。 它将元数据存储在 msdb 数据库中,并使用系统作业来写入完整数据库和事务日志备份。

组件

Transact-SQL 是与 SQL Server 托管备份到 Microsoft Azure 进行交互的主要接口。 系统存储过程用于启用、配置和监视 SQL Server 托管备份到 Microsoft Azure。 系统函数用于检索现有配置设置、参数值和备份文件信息。 扩展事件用于显示错误和警告。 警报机制通过 SQL 代理作业和基于 SQL Server 策略的管理启用。 下面是有关 SQL Server 托管备份到 Microsoft Azure 的对象及其功能的说明的列表。

还可以使用 PowerShell cmdlet 将 SQL Server 托管备份配置为Microsoft Azure。 SQL Server Management Studio 支持使用 还原数据库 任务将 SQL Server 托管的备份还原到 Microsoft Azure。

系统对象 DESCRIPTION
MSDB 存储由 SQL Server 托管备份至 Microsoft Azure 创建的所有备份的元数据和备份历史记录。
smart_admin.set_db_backup (Transact-SQL) 用于启用和配置数据库到 Microsoft Azure 的 SQL Server 托管备份的系统存储过程。
smart_admin.set_instance_backup(Transact-SQL) 用于启用和配置 SQL Server 实例的默认设置的系统存储过程,以实现 SQL Server 托管备份到 Microsoft Azure。
smart_admin.sp_ backup_master_switch (Transact-SQL) 用于暂停和恢复 SQL Server 托管备份到 Microsoft Azure 的系统存储过程。
smart_admin.sp_set_parameter (Transact-SQL) 用于为 SQL Server 托管备份启用和配置监视Microsoft Azure 的系统存储过程。 示例:启用扩展事件、通知的邮件设置。
smart_admin.sp_backup_on_demand (Transact-SQL) 用于执行启用 SQL Server 托管备份到 Microsoft Azure 的数据库的临时备份的系统存储过程,无需中断日志链。
smart_admin.fn_backup_db_config (Transact-SQL) 返回当前 SQL Server 托管备份到 Microsoft Azure 的状态和配置值的系统函数,适用于单个数据库或实例上所有数据库。
smart_admin.fn_is_master_switch_on (Transact-SQL) 返回主交换机状态的系统函数。
smart_admin.sp_get_backup_diagnostics (Transact-SQL) 用于返回扩展事件日志中的事件的系统存储过程。
smart_admin.fn_get_parameter (Transact-SQL) 用于返回备份系统设置当前值的系统功能,包括监控设置和用于警报的邮件设置。
smart_admin.fn_available_backups (Transact-SQL) 用于检索指定数据库或实例中所有数据库的可用备份的存储过程。
smart_admin.fn_get_current_xevent_settings(Transact-SQL) 返回当前扩展事件设置的系统函数。
smart_admin.fn_get_health_status (Transact-SQL) 系统函数,该函数返回指定时间段内扩展事件记录的错误的聚合计数。
监视 SQL Server 托管备份到 Azure 的过程 用于监视的扩展事件、错误和警告的电子邮件通知、用于 SQL Server 托管备份的 SQL Server 策略管理到 Microsoft Azure。

备份策略

SQL Server 托管备份用于Microsoft Azure 的备份策略:

计划的备份类型和备份频率取决于数据库的工作负荷。 保留期设置用于确定备份文件应在存储中保留的时间长度,并且能够将数据库恢复到保留期内的时间点。

备份容器和文件命名约定:

SQL Server 托管备份到 Microsoft Azure 利用 SQL Server 实例名称为所有数据库(除高可用性数据库外)命名 Azure 存储容器。 对于可用性数据库,可用性组 GUID 用于命名 Azure 存储容器。

非可用性数据库的备份文件使用以下约定命名:该名称是使用数据库名称的前 40 个字符、没有“-”的数据库 GUID 和时间戳创建的。 下划线字符作为分隔符在段之间插入。 .bak文件扩展名用于完整备份,.log文件用于日志备份。 对于 Avaialbility Group 数据库,除了上述文件命名约定外,可用性组数据库 GUID 还会在数据库名称的 40 个字符后添加。 可用性组数据库的 GUID 值是 sys.databases 中 group_database_id 对应的值。

完整数据库备份: SQL Server 托管备份到 Microsoft Azure 的代理会在以下任一情况发生时安排完整数据库备份。

  • 数据库首次启用了 SQL Server 托管备份到 Microsoft Azure,或者在实例级别以默认设置启用 SQL Server 托管备份到 Microsoft Azure。

  • 自上次完整数据库备份以来的日志增长等于或大于 1 GB。

  • 自上次完整数据库备份以来,已过去一周的最大时间间隔。

  • 日志链已损坏。 SQL Server 托管备份到 Microsoft Azure 定期检查日志链是否完好无损,方法是比较备份文件的第一个和最后一个 LSN。 如果日志链因任何原因中断,SQL Server 托管备份将会在 Microsoft Azure 上安排一次完整数据库备份。 日志链中断的最常见原因是使用 Transact-SQL 或通过 SQL Server Management Studio 中的备份任务发出的备份命令。 其他常见情况包括意外删除备份日志文件或意外覆盖备份文件。

事务日志备份: 如果存在以下任一情况,则 SQL Server 托管备份Microsoft Azure 计划日志备份:

  • 找不到日志备份历史记录。 当首次启用 Microsoft Azure 上的 SQL Server 托管备份时,通常会出现这种情况。

  • 使用的事务日志空间为 5 MB 或更大。

  • 自上次日志备份以来的最大时间间隔为 2 小时。

  • 每当事务日志备份落后于完整数据库备份时。 目标是在完整备份之前保留日志链。

保留期设置

启用备份时,必须设置保留期(天):最小值为 1 天,最大值为 30 天。

基于保留期设置,SQL Server 托管备份到 Microsoft Azure,评估在指定时间点恢复的能力,以确定需要保留的备份文件和需要删除的备份文件。 备份完成日期用于确定和匹配保留期设置中指定的时间。

重要注意事项

有一些事项需要考虑,以便了解它们对 SQL Server 托管备份到 Microsoft Azure 操作的影响。 下面列出了它们:

  • 对于一个数据库,如果当前有正在运行的完整数据库备份作业,那么 SQL Server 托管备份到 Microsoft Azure 会等待当前作业完成,然后再对同一数据库执行另一个完整数据库备份。 同样,一个给定时间只能运行一个事务日志备份。 但是,完整数据库备份和事务日志备份可以并发运行。 失败记录为扩展事件。

  • 如果计划了 10 多个并发完整数据库备份,则会通过扩展事件的调试通道发出警告。 SQL Server 托管备份到 Microsoft Azure,随后为剩余需要备份的数据库维护一个优先队列,直到所有备份均被安排并完成。

支持范围限制

以下是特定于 SQL Server 2014 的一些限制:

  • SQL Server 托管备份到 Microsoft Azure 代理仅支持数据库备份:完整备份和日志备份。 不支持文件备份自动化。

  • 当前支持使用 Transact-SQL 执行 SQL Server 托管备份到 Microsoft Azure。 可以使用扩展事件进行监视和故障排除。 PowerShell 和 SMO 支持仅限于配置 SQL Server 实例的存储和保留期默认设置,以及基于 SQL Server 策略的管理策略监视备份状态和整体运行状况。

  • 不支持系统数据库。

  • Azure Blob 存储服务是唯一支持的备份存储选项。 不支持备份到磁盘或磁带。

  • 目前,Azure 存储中页 Blob 允许的最大文件大小为 1 TB。 大于 1 TB 的备份文件将失败。 为了避免这种情况,我们建议在将 SQL Server 托管备份设置为 Microsoft Azure 之前,使用压缩并测试备份文件大小。 可以通过备份到本地磁盘或使用 BACKUP TO URL Transact-SQL 语句手动备份到 Azure 存储来进行测试。 有关详细信息,请参阅 SQL Server 备份到 URL

  • 恢复模式:仅支持设置为“完整”或“大容量日志”恢复模式的数据库。 不支持设置为简单恢复模式的数据库。

  • 配置将 SQL Server 托管备份到 Microsoft Azure时,如果与支持备份、高可用性或灾难恢复的其他技术一起使用,可能会存在一些限制。 有关详细信息,请参阅 SQL Server 托管备份到 Azure:互作性和共存

相关任务

任务说明 主题
将 SQL Server 托管备份配置到 Microsoft Azure 以用于数据库或在实例级别配置默认设置、禁用实例或数据库级别的 SQL Server 托管备份到 Microsoft Azure、暂停和重启 SQL Server 托管备份到 Microsoft Azure 等基本任务。 SQL Server 托管备份到 Azure - 保留和存储设置
教程: 分步说明如何配置和监视要Microsoft Azure 的 SQL Server 托管备份。 将 SQL Server 托管备份设置到 Azure
教程: 分步说明如何配置和监视 SQL Server 托管备份服务,以便在 Microsoft Azure 的可用性组中管理数据库。 为可用性组将 SQL Server 托管备份配置到 Azure
与 SQL Server 托管备份至 Microsoft Azure 的监视相关的工具、概念和任务。 监视到 Azure 的 SQL Server 托管备份
将 SQL Server 托管备份故障排除到 Microsoft Azure 的工具和步骤。 排查 SQL Server 管理备份到 Azure 的问题

另请参阅

使用 Azure Blob 存储服务进行 SQL Server 备份和还原
SQL Server 备份至 URL
SQL Server 托管备份到 Azure:互操作性和共存
Azure 中的 SQL Server 托管备份疑难解答