优化 SQL Server 备份策略
概览
大多数组织都在寻找合适的解决方案,以确保其在 Amazon EC2 上的 SQL Server 的数据安全,从而满足其当前对于恢复点目标(RPO)(即自上一次备份以来的最大可接受时间间隔)以及恢复时间目标(RTO)(即服务中断与恢复服务之间最大可接受延迟时间)的要求。如果在 EC2 实例上运行 SQL Server,您可以通过多种方式创建数据备份和还原数据。保护 Amazon EC2 上的 SQL Server 数据的备份策略包括以下内容:
-
使用启用了 Windows 卷影复制服务(VSS)的 Amazon Elastic Block Store(Amazon EBS)
快照或 AWS Backup 进行服务器级备份 -
在 SQL Server 中使用本机备份和还原
进行数据库级备份
对于数据库级本机备份,您具有以下存储选项:
-
使用 Amazon EBS 卷进行本地备份
-
采用适用于 Windows File Server 的 Amazon FSx或适用于 NetApp ONTAP 的 Amazon FSx 进行网络文件系统备份
-
使用 AWS Storage Gateway 进行到 Amazon Simple Storage Service(Amazon S3)的网络备份
-
直接备份到适用于 SQL Server 2022 的 Amazon S3
该部分会执行以下操作:
-
突出展示有助于您节省存储空间的功能
-
比较不同后端存储选项的成本
-
提供指向深入文档的链接,以帮助实施这些建议
使用启用 VSS 的快照进行服务器级备份
启用 VSS 的快照架构使用 AWS Systems Manager Run Command 在 SQL Server 实例上安装 VSS 代理。您还可以使用 Run Command 调用整个工作流程,包括将操作系统和应用程序缓冲区刷新到磁盘、暂停 I/O 操作、拍摄 EBS 卷的时间点快照,然后恢复 I/O。
这个 Run Command 会为所有连接到目标实例的 EBS 卷创建自动化快照。您还可以选择排除根卷,因为用户数据库文件通常存储在其他卷上。如果您对多个 EBS 卷进行条带化来为 SQL Server 文件创建单个文件系统,Amazon EBS 还支持使用单个 API 命令的崩溃一致性多卷快照。有关启用 VSS 的应用程序一致性 EBS 快照
以下图表展示了使用启用 VSS 的快照进行的服务器级备份的架构。
请考虑使用启用 VSS 的快照的以下益处:
-
数据库实例的第一个快照包含完整数据库实例的数据。相同数据库实例的后续快照为增量快照,这意味着仅会保存在最新快照后更改的数据。
-
EBS 快照提供时间点恢复。
-
如果使用 Amazon EBS 对实例进行加密,或者使用 TDE 对实例中的数据库进行加密,则该实例或数据库将使用相同的加密方式自动还原。
-
您可以复制您的自动跨区域备份。
-
从快照中还原 EBS 卷时,应用程序可以立即对其进行访问。这意味着,在从快照中还原 SQL Server 的一个或多个底层 EBS 卷后,您可以立即将 SQL Server 置于在线状态。
-
默认情况下,还原后的卷会在应用程序首次尝试读取卷时从 Amazon S3 获取底层块。这意味着从快照还原 EBS 卷后,性能可能会出现延迟。卷最终捕获到标称性能。但是,您可以使用快速快照还原(FSR)快照避免出现该延迟。
-
您可以使用 EBS 快照的生命周期管理
。
请考虑使用启用 VSS 的快照的以下限制:
-
对于 SQL Server 实例,您无法使用加密快照来执行跨区域的时间点恢复。
-
您无法创建未加密实例的加密快照。
-
您无法还原单个数据库,因为快照是在 EBS 卷级拍摄的。
-
您无法将实例还原到其自身位置。
-
数据库实例的快照必须使用与数据库实例相同的 AWS Key Management Service(AWS KMS)密钥进行加密。
-
在快照备份过程中,存储 I/O 会暂停几分之一秒(大约 10 毫秒)。
使 AWS Backup 用进行 SQL Server 备份
您可以使用 AWS Backup
下图显示了通过使用 AWS Backup 在 EC2 上构建 SQL Server 备份与还原解决方案的架构。
请考虑使用 AWS Backup 备份 SQL Server 的以下益处:
-
您可以自动备份计划、保留管理和生命周期管理。
-
您可以跨组织、跨多个账户和 AWS 区域 集中备份策略。
-
您可以集中监控备份活动,并跨 AWS 服务发出提醒。
-
您可以为灾难恢复计划实施跨区域备份。
-
该解决方案支持跨账户备份。
-
您可以使用二级备份加密来执行安全备份。
-
所有备份都支持使用 AWS KMS 加密密钥进行加密。
-
该解决方案适用于 TDE。
-
您可以从 AWS Backup 控制台中还原到特定的恢复点。
-
您可以备份整个 SQL Server 实例,其中包括所有 SQL Server 数据库。
数据库级备份
这些方法使用 Microsoft SQL Server 的本机备份功能。您可以对 SQL Server 实例上的单个数据库进行备份,也可以恢复单个数据库。
这些用于本机 SQL Server 备份和恢复的选项还支持以下内容:
-
压缩备份和多文件备份
-
完整备份、差异备份和 T 日志备份
-
TDE 加密的数据库
SQL Server 本机备份并还原到 Amazon S3
Amazon EC2 上的 SQL Server 支持 SQL Server 数据库的本机备份和恢复。您可以对 SQL Server 数据库进行备份,然后将备份文件还原到现有数据库、新的 SQL Server EC2 实例、Amazon RDS for SQL Server 或本地服务器。
Storage Gateway 是一项混合云存储服务,它为本地应用程序提供对几乎无限的云存储的访问权限。您可以使用存储网关将您的 Microsoft SQL Server 数据库直接备份到 Amazon S3,从而减少本地存储占用空间,并使用 Amazon S3 实现持久、可扩展且经济实惠的存储。
下图显示了使用存储网关和 Amazon S3 的本机备份和还原解决方案的架构。
请考虑使用 存储网关进行本机 SQL Server 备份的以下益处:
-
您可以将存储网关映射为 EC2 实例上的服务器消息块(SMB)文件共享,并将备份发送到 Amazon S3。
-
备份直接或通过存储网关文件缓存发送到 S3 存储桶。
-
支持多文件备份。
考虑使用存储网关进行本机备份的以下限制:
-
必须为每个单独的数据库设置备份和恢复。
-
您必须为备份文件管理 Amazon S3 生命周期政策。
有关如何设置存储网关的更多信息,请参阅 AWS 博客上的使用 AWS Storage Gateway 将 SQL Server 备份存储到 Amazon S3 中
SQL Server 本机备份到 EBS 卷
您可以对 SQL Server 数据库进行本机备份,并将文件存储在 Amazon EBS 卷中。Amazon EBS 是一项高性能的数据块存储服务。EBS 卷具有弹性,支持加密功能。它们可以分离并连接到 EC2 实例。您可以将 EC2 实例上的 SQL Server 在相同或不同的 EBS 卷类型上进行备份。备份到不同的 EBS 卷的一个优点是可以节省成本。
下图显示了 EBS 卷的本机备份的架构。
考虑使用 SQL Server 本机备份到 EBS 卷的以下益处:
-
您可以对 SQL Server EC2 实例上的单个数据库进行备份,也可以恢复单个数据库,无需恢复整个实例。
-
支持多文件备份。
-
您可以使用 SQL Server Agent 和 SQL Server 作业引擎安排备份作业。
-
您可以通过选择硬件来实现更高的性能。例如,您可以使用 st1 存储卷来实现更高的吞吐量。
考虑使用到 EBS 卷的本机备份的以下限制:
-
您必须手动将备份从 EBS 卷移至 Amazon S3。
-
对于大型备份,您必须管理 Amazon EC2 上的磁盘空间。
-
在 EC2 实例上,Amazon EBS 吞吐量可能是一个瓶颈。
-
在 Amazon EBS 上存储备份需要额外的存储空间。
SQL Server 本机备份到适用于 Windows File Server 的 Amazon FSx
适用于 Windows File Server 的 Amazon FSx
下图显示了适用于 Windows File Server 的 FSx 的本机 SQL Server 备份的架构。
考虑使用 SQL Server 本机备份到适用于 Windows File Server 的 FSx 的以下益处:
-
您可以将 SQL Server 数据库备份到 Amazon FSx 文件共享中。
-
您可以对 SQL Server 实例上的单个数据库进行备份,也可以恢复单个数据库,无需恢复整个实例。
-
支持多部分备份。
-
您可以使用 SQL Server Agent 和作业引擎安排备份作业。
-
与 Amazon EBS 相比,这些实例的网络带宽更高。
考虑使用 SQL Server 本机备份到适用于 Windows File Server 的 FSx 的以下限制:
-
您必须使用 AWS Backup 或 AWS DataSync 手动将备份从 Amazon FSx 移至 Amazon S3。
-
在 Amazon FSx 上,大型备份可能需要额外的磁盘空间管理开销。
-
EC2 实例网络吞吐量可能是一个瓶颈。
-
在适用于 Windows File Server 的 FSx 上存储备份需要额外的存储。
SQL Server 备份到适用于 NetApp ONTAP 的 Amazon FSx
利用适用于 ONTAP 的 FSx 拍摄的快照始终保持崩溃一致性,但您需要先使数据库处于停机状态(或暂停其 I/O 操作)才能创建一个应用程序一致性快照。您可以将 NetApp SnapCenter(一款集成了特定应用程序插件的编排工具,SQL Server)与适用于 ONTAP 的 FSx 结合使用,以创建应用程序一致性快照,并保护、复制和克隆您的数据库,无需额外的费用。
NetApp SnapCenter
NetApp SnapCenter 是一个用于实现应用程序一致性数据保护的统一平台。SnapCenter 将快照称为备份。本指南采用相同的命名规则。SnapCenter 提供一个统一的管理界面,用于管理应用程序一致性备份、还原和克隆操作。您需为特定的数据库应用程序添加一个 SnapCenter 插件,以创建应用程序一致性备份。适用于 SQL Server 的 SnapCenter 插件提供以下功能,可简化您的数据保护工作流程。
-
适用于完整备份和日志备份的细粒度备份与还原选项
-
就地还原并恢复到其他位置
有关 SnapCenter 的更多信息,请参阅 AWS 存储博客上的将 NetApp SnapCenter 与适用于 NetApp ONTAP 的 Amazon FSx 结合使用来保护您的 SQL Server 工作负载
备份的成本优化
以下选项可以帮助您降低在 AWS 上存储 SQL Server 备份的成本。
-
在创建备份文件期间启用 SQL Server 压缩
功能,并将尽可能小的文件发送到存储中。例如,3:1 的压缩比意味着您能节省约 66% 的磁盘空间。要对这些列进行查询,您可以使用以下 Transact-SQL 语句: SELECT backup_size/compressed_backup_size FROM msdb..backupset;。 -
对于传送到 S3 存储桶的备份,启用 Amazon S3 Intelligent-Tiering
存储类别将存储成本降低 30%。 -
对于传送到适用于 Windows File Server 的 FSx 或适用于 ONTAP 的 FSx 的备份,使用单可用区可节省 50% 的费用(与使用多个可用区相比)。有关定价信息,请参阅适用于 Windows File Server 的 Amazon FSx 定价
和适用于 NetApp ONTAP 的 Amazon FSx 定价 。 -
SQL Server 2022 最高效的备份选项是直接备份到 Amazon S3。您可以通过避免使用存储网关来节省额外的费用。
备份的基准测试结果
本部分依据本指南中所涵盖的备份解决方案的性能基准测试结果,从成本和性能的角度,针对一个 1TB 的数据库样本,对以下选项进行比较。
-
EC2 实例规格:搭载 Windows Server 2019 和 SQL Server 2019 开发人员版的 r5d.8xlarge
-
数据库规格:禁用 TDE 时大小为 1TB
测试是以 r5d.8xlarge 实例和 1TB SQL Server 数据库作为源进行的。源系统是根据最佳实践配置的,源数据库包含四个数据文件(每个文件为 250GB)和一个日志文件(50GB),分布在不同的 gp3 卷中。SQL Server 本机 BACKUP 命令包括写入 10 个备份文件、使用压缩来优化备份性能,以及减少通过网络发送写入目标的数据量。在所有测试案例中,存储性能都是瓶颈所在。
这些类型的测试几乎有无穷无尽的可能配置。此测试侧重于从性能、成本、可扩展性以及实际使用案例等方面进行优化。以下表格列出了针对备份目标选项所获取的性能指标。
| 备份选项 | 级别 | 运行持续时间(Appx) | 备份速率 | 每月费用(美元)* |
|---|---|---|---|---|
| 本机备份到本地 EBS st1 HDD,2TB | 数据库 | 00:30:46 分钟 | 554.7Mbps | 92.16 美元 |
| 本机备份到本地 EBS SSD gp3,2TB | 数据库 | 00:22:00 分钟 | 512 Mbps | 193.84 美元 |
| 本机备份到适用于 Windows File Server 的 FSx HDD(2 TB,吞吐量 512 Mbps) | 数据库 | 00:20:58 分钟 | 814.0Mbps | 1146 美元 |
| 本机备份到适用于 Windows File Server 的 FSx SSD,512 Mbps 吞吐量下为 2TB | 数据库 | 00:20:00 分钟 | 814.0Mbps | 1326 美元 |
| 本机备份到具有 2TB gp3 的 S3 文件网关 m6i.4xlarge(16 vCPU,64GB) | 数据库 | 00:23:20 分钟 | 731.5Mbps | 470.42 美元 |
| EBS VSS 快照 | EBS 卷 | 00:00:02 秒 00:00:53 秒 |
N/A 快照 | 51 美元 |
| AWS Backup(AMI 备份) | AMI | 00:00:04 秒 00:08:00 分钟 |
N/A 快照 | $75 |
| 直接 SQL Server 本机备份到 Amazon S3(SQL Server 2022) | 数据库 | 00:12:00 分钟 | 731.5Mbps | 前 50TB /月,每 GB 0.023 美元,每月 23.55 美元 |
| 本机备份到适用于 ONTAP 的 FSx(使用 SnapCenter) | 数据库 | – | – | 440.20 美元 |
上述表格进行如下假设:
-
数据传输和 Amazon S3 费用不包括在内。
-
存储价格包含在实例定价中。
-
费用以
us-east-1区域为准。 -
当进行多次备份时,吞吐量和 IOPS 分别增长 10%。而整个月内的总体变化率为 10%。
测试结果显示,最快的方法是将 SQL Server 数据库本机备份到适用于 Windows File Server 的 FSx 上。备份到存储网关以及本地连接的 EBS 卷是一种成本效益更高的选项,但其性能会相对较慢。对于服务器级备份(AMI),我们建议使用 AWS Backup 实现最佳性能、成本和可管理性。
成本优化建议
了解在 Amazon EC2 上备份 SQL Server 的可能解决方案至关重要,它能够保障您的数据安全、确保您满足备份需求以及制定计划以从关键事件中恢复过来。本部分探讨的备份和恢复 SQL Server 实例及数据库的不同方法,能够帮助您制定出既能保护数据又能满足组织需求的备份和恢复策略。
本部分将介绍以下备份选项:
-
压缩
-
Amazon S3 Intelligent-Tiering
-
单可用区
-
备份到 URL
针对这些选项所提供的指南都是较为宏观的。如果您希望在您的组织中实施上述任何一项建议,我们建议您联系您的客户团队。然后,该团队可以与 Microsoft 的专业服务代表进行沟通,由其主导对话过程。您也可以通过发送电子邮件至 optimize-microsoft@amazon.com 进行联系。
总之,我们建议执行下列操作:
-
如果您使用的是 SQL Server 2022,则备份到 Amazon S3 是最经济高效的选项。
-
如果您使用的是 SQL Server 2019 及更早版本的 SQL Server,则考虑备份至由 Amazon S3 支持的存储网关,因为该方法是最经济高效的选项。
压缩
压缩的目的是减少每次备份所占用的存储空间,这对于各种存储选项都是有益的。您必须在 SQL Server 实例
BACKUP DATABASE <database_name> TO DISK WITH COMPRESSION
(ALGORITHM = QAT_DEFLATE)
Amazon S3 Intelligent-Tiering
对于传送到 Amazon S3 存储桶的备份,您可以启用 Amazon S3 Intelligent-Tiering
以下图表展示了基于 S3 Intelligent-Tiering 的解决方案的一个架构。
默认情况下,写入 S3 存储桶的备份文件使用的是标准层。要将备份文件从标准层转换为 S3 Intelligent-Tiering,必须创建生命周期规则。您还可以使用 AWS 管理控制台 启用 S3 Intelligent-Tiering。有关更多信息,请参阅 AWS 文档中的开始使用 Amazon S3 Intelligent-Tiering
单可用区
要创建单可用区文件系统,请在创建适用于 Windows File Server 的 FSx 文件系统时选择单可用区选项。Amazon FSx 还会每天使用 Windows 卷影复制服务对您的文件系统进行高持久性的备份(这些备份会存储在 Amazon S3 中),并且允许您在任何时间点进行额外的备份操作。请记住使用单可用区时所存在的某些问题。例如,如果预调配文件系统的某个受影响可用区因故障而长时间(数小时)无法运行,则该 SMB 文件共享就会无法使用。如果您需要访问这些数据,必须从源区域中的某个可用区中的备份恢复数据。有关更多信息,请参阅本指南的使用单可用区部分。
备份到 URL
对于 SQL Server 2022,备份到 URL
其他资源
-
Amazon EC2 上的 SQL Server 的备份和还原选项(AWS 规范性指南)
-
使用 AWS Backup 进行 Amazon RDS 的时间点恢复和连续备份
(AWS 存储博客) -
结合使用 NetApp SnapCenter 和适用于 NetApp ONTAP 的 Amazon FSx 来保护您的 SQL Server 工作负载
(AWS 存储博客) -
开始使用 Amazon S3 Intelligent-Tiering
(AWS 入门资源中心) -
Amazon RDS for SQL Server 的备份和还原策略
(AWS 数据库博客) -
将本地 Microsoft SQL Server 数据库迁移至 Amazon EC2(AWS 规范性指南)