目标为 Microsoft Azure 的 SQL Server 托管备份
适用于 SQL Server - 仅限 Windows
目标为 Microsoft Azure 的 SQL Server 托管备份管理并自动执行将 SQL Server 备份到 Microsoft Azure Blob 存储。 你可以选择允许 SQL Server 基于你的数据库的事务工作负荷确定备份计划,或者使用高级选项来定义计划。 保留期设置可确定备份存储在 Azure Blob 存储上的时间。 目标为 Microsoft Azure 的 SQL Server 托管备份支持指定保留期的时间点还原。
注意
目标为 Microsoft Azure 的 SQL Server 托管备份的过程和基本行为在 SQL Server 2016 (13.x) 中已更改。 有关详细信息,请参阅迁移托管备份设置。
建议将目标为 Microsoft Azure 的 SQL Server 托管备份用于在 Microsoft Azure 虚拟机上运行的 SQL Server 实例。
优点
目前,自动备份多个数据库需要制定备份策略、编写自定义代码并安排备份。 使用目标为 Microsoft Azure 的 SQL Server 托管备份时,可以通过仅指定保持期和存储位置来创建备份计划。 尽管可以使用高级设置,但并非必需。 目标为 Microsoft Azure 的 SQL Server 托管备份将计划、执行和维护备份。
目标为 Microsoft Azure 的 SQL Server 托管备份可以在数据库级别或 SQL Server 实例级别进行配置。 在实例级别进行配置时,任何新数据库也将自动备份。 在数据库级别的设置可用于在个别情况下重写实例级别默认设置。
你还可以对备份进行加密以提高安全性,并且可以设置自定义计划以控制执行备份的时间。 有关使用 Microsoft Azure Blob 存储进行 SQL Server 备份的优点的更多详细信息,请参阅使用 Azure Blob 存储进行 SQL Server 备份和还原。
先决条件
目标为 Microsoft Azure 的 SQL Server 托管备份使用 Microsoft Azure 存储来存储备份文件。 需要以下先决条件:
先决条件 | 说明 |
---|---|
Microsoft Azure 帐户 | 可以在浏览 购买选项 之前,使用 免费试用版开始使用 Azure。 |
Azure 存储帐户 | 备份存储在与 Azure 存储帐户相关的 Azure Blob 存储中。 有关创建存储帐户的分步说明,请参阅创建存储帐户。 |
blob 容器 | BLOB 组织在容器中。 你可以为备份文件指定目标容器。 可以在 Azure 管理门户中创建容器,或者可以使用 New-AzureStorageContainer Azure PowerShell 命令。 |
共享访问签名 (SAS) | 对目标容器的访问由共享访问签名 (SAS) 控制。 有关 SAS 的概述,请参阅使用共享访问签名 (SAS) 授予对 Azure 存储资源的有限访问权限。 可以使用 New-AzureStorageContainerSASToken PowerShell 命令在代码中创建一个 SAS 令牌。 有关简化此过程的 PowerShell 脚本,请参阅使用 Powershell 简化在 Azure 存储空间中使用共享访问签名 (SAS) 令牌创建 SQL 凭据的过程。 SAS 令牌可以存储在 SQL 凭据中,以便与目标为 Microsoft Azure 的 SQL Server 托管备份一起使用。 |
SQL Server 代理 | 必须运行 SQL Server 代理,才能使目标为 Microsoft Azure 的 SQL Server 托管备份正常工作。 考虑将启动选项设置为自动。 |
可读取 AG 次要 | 如果要将托管备份卸载到 Always On 可用性组的次要副本,则必须将次要副本设置为“可读”,以便托管备份成功。 |
组件
Transact-SQL 是与目标为 Microsoft Azure 的 SQL Server 托管备份交互的主要接口。 系统存储过程用于启用、配置和监视目标为 Microsoft Azure 的 SQL Server 托管备份。 系统函数用于检索现有配置设置、参数值和备份文件信息。 扩展事件用于呈现错误和警告。 警报机制通过 SQL 代理作业和 SQL Server 基于策略的管理启用。 以下对象列表包括与目标为 Microsoft Azure 的 SQL Server 托管备份相关的功能的描述。
还可以使用 PowerShell cmdlet 对目标为 Microsoft Azure 的 SQL Server 托管备份进行配置。 SQL Server Management Studio 支持还原由目标为 Microsoft Azure 的 SQL Server 托管备份使用“还原数据库”任务创建的备份。
系统对象 | 说明 |
---|---|
msdb |
存储由目标为 Microsoft Azure 的 SQL Server 托管备份创建的所有备份的元数据和备份历史记录。 |
managed_backup.sp_backup_config_basic | 启用目标为 Microsoft Azure 的 SQL Server 托管备份。 |
managed_backup.sp_backup_config_advanced | 配置目标为 Microsoft Azure 的 SQL Server 托管备份的高级设置,例如加密。 |
managed_backup.sp_backup_config_schedule | 为目标为 Microsoft Azure 的 SQL Server 托管备份创建自定义计划。 |
managed_backup.sp_ backup_master_switch | 暂停和恢复目标为 Microsoft Azure 的 SQL Server 托管备份。 |
managed_backup.sp_set_parameter | 启用和配置对目标为 Microsoft Azure 的 SQL Server 托管备份的监控。 示例:启用扩展事件、通知的邮件设置。 |
managed_backup.sp_backup_on_demand | 对为使用目标为 Microsoft Azure 的 SQL Server 托管备份而启用的数据库执行即席备份而不中断日志链。 |
managed_backup.fn_backup_db_config | 为某个数据库,或者某个实例的所有数据库返回目标为 Microsoft Azure 的 SQL Server 托管备份的当前状态和配置值。 |
managed_backup.fn_is_master_switch_on | 返回主开关状态。 |
managed_backup.sp_get_backup_diagnostics | 返回扩展事件所记录的事件。 |
managed_backup.fn_get_parameter | 返回备份系统设置当前值,如监视和警报的电子邮件设置。 |
managed_backup.fn_available_backups | 用于检查指定数据库或实例所有数据库的可用备份。 |
managed_backup.fn_get_current_xevent_settings | 返回当前扩展事件设置。 |
managed_backup.fn_get_health_status | 返回由指定期间扩展事件记录的合计错误数。 |
备份策略
以下部分介绍目标为 Microsoft Azure 的 SQL Server 托管备份到的备份策略。
备份计划
可以使用系统存储过程 managed_backup.sp_backup_config_schedule 指定自定义备份计划。 如果没有指定自定义计划,则安排的备份类型和备份频率将根据数据库的工作负载确定。 保持期设置用于决定应在存储中保留备份文件的时间长度以及能否将数据库恢复到保留期内的某个时间点。
备份文件命名约定
目标为 Microsoft Azure 的 SQL Server 托管备份使用你指定的容器,因此你可以控制容器的名称。 对于备份文件,按照以下约定命名非可用性数据库:使用数据库名称的前 40 个字符、不含 -
的数据库 GUID 以及时间戳来创建名称。 在各段之间插入下划线字符作为分隔符。 完整备份使用 .bak
文件扩展名,日志备份使用 .log
。 对于可用性组 (AG) 中的数据库,除了上文所述的文件命名约定之外,还在 40 个字符的数据库名称后添加可用性组数据库 GUID。 可用性组数据库 GUID 值是 sys.databases
中的 group_database_id 的值。
完整数据库备份
如果满足以下任一条件,目标为 Microsoft Azure 的 SQL Server 托管备份代理便会安排一次完整数据库备份。
数据库是首次启用目标为 Microsoft Azure 的 SQL Server 托管备份,或者是在实例级别使用默认设置启用目标为 Microsoft Azure 的 SQL Server 托管备份。
自上次完备数据库备份以来的日志增长等于或超过 1 GB。
距上次完整数据库备份以来已超过一周的最大时间间隔。
日志链中断。 目标为 Microsoft Azure 的 SQL Server 托管备份会定期进行检查,通过比较备份文件的第一个和最后一个 LSN 来确定日志链是否完整。 如果日志链因为任何原因而存在中断,则目标为 Microsoft Azure 的 SQL Server 托管备份会安排一次完整数据库备份。 日志链断裂的最常见原因可能是使用 Transact-SQL 或通过 SQL Server Management Studio 中的备份任务发出了备份命令。 其他常见的情况包括意外删除了备份文件或意外的备份覆盖。
交易日志备份
如果满足以下任一条件,目标为 Microsoft Azure 的 SQL Server 托管备份代理便会安排一次日志备份:
找不到日志备份历史记录。 首次启用目标为 Microsoft Azure 的 SQL Server 托管备份时,通常会发生这种情况。
使用的事务日志空间为 5 MB 或更大。
距上次日志备份达到 2 小时的最大时间间隔。
事务日志备份滞后于完整备份数据库时。 目标是使日志链保持在完整备份之前。
保持期设置
在启用备份时,必须以天为单位设置保持期:最短为 1 天,最长为 90 天。
目标为 Microsoft Azure 的 SQL Server 托管备份会根据保持期设置评估能否恢复到指定的时间点来决定要保留的备份文件并确定要删除的备份文件。 备份的 backup_finish_date 用于确定和匹配由保持期设置指定的时间。
注意事项
对于数据库,如果现有完整数据库备份作业正在运行,则目标为 Microsoft Azure 的 SQL Server 托管备份将等待当前作业完成,然后再对该数据库进行一次完整数据库备份。 同样,给定时间只能运行一个事务日志备份。 但是,完整数据库备份和事务日志备份可以同时运行。 失败会记录为扩展事件。
如果安排了超过 10 个并发的完整数据库备份,则会通过扩展事件的调试渠道发出一个警告。 随后,目标为 Microsoft Azure 的 SQL Server 托管备份将针对其余需要备份的数据库保留一个优先级队列,直到安排并完成所有备份。
注意
代理服务器不支持 SQL Server 托管备份。
可支持性
以下内容支持特定于 SQL Server 的限制和注意事项:
支持
master
、model
和msdb
系统数据库的备份。 不支持tempdb
的备份。支持所有恢复模式(完整、大容量日志和简单)。
目标为 Microsoft Azure 的 SQL Server 托管备份代理仅支持数据库完整备份和日志备份。 不支持文件备份自动化。
Microsoft Azure Blob 存储是唯一受支持的备份存储选项。 不支持备份到磁盘或磁带。
目标为 Microsoft Azure 的 SQL Server 托管备份使用“备份到块 blob”功能。 块 BLOB 的最大大小为 200 GB。 但通过使用带区,单个备份的最大大小可达 12 TB。 如果你的备份要求超出此限制,请考虑使用压缩,并在设置目标为 Microsoft Azure 的 SQL Server 托管备份之前测试备份文件大小。 可通过备份到本地磁盘或使用
BACKUP TO URL
Transact-SQL 语句手动备份到 Microsoft Azure 存储来进行测试。 有关详细信息,请参阅从 SQL Server 备份到 Microsoft Azure Blob 存储的 URL。当使用支持备份、高可用性或灾难恢复的其他技术配置时,目标为 Microsoft Azure 的 SQL Server 托管备份可能会存在一些限制。
可用性组中的数据库的备份是 copy-only 备份。
如果要将托管备份卸载到 Always On 可用性组的次要副本,则必须将次要副本设置为“可读”,以便托管备份条带化多个文件。