选择高可用性和灾难恢复解决方案
概览
我们建议您为 AWS 上的 SQL Server 部署设计一种架构,既要满足您的业务需求,又能满足灾难恢复(DR)目标,包括恢复时间目标(RTO)和恢复点目标(RPO)。以下这些解决方案能够帮助您为在 Amazon Elastic Compute Cloud(Amazon EC2)上运行的 SQL Server 设计合适的架构,同时优化您的 SQL Server 工作负载的成本。
-
SQL Server Always On 可用性组:SQL Server Always On 可用性组为 SQL Server 数据库提供高可用性和灾难恢复(HA/DR)解决方案。可用性组由一组一起故障转移的用户数据库组成。Always On 可用性组在数据库层面也提供了冗余功能,但并不需要共享存储,因为每个副本都有自己的本地存储。您可以将此功能部署为 HA/DR 解决方案。有关更多信息,请参阅 Microsoft 文档中的什么是 Always On 可用性组?
。 -
SQL Server Always On 失效转移群集实例(FCI):SQL Server Always On FCI 使用 Windows Server 失效转移群集(WSFC)在 SQL Server 实例层级提供高可用性。FCI 需要共享存储来托管数据库。您可以使用共享块存储或者共享文件存储。例如,您可以将适用于 Windows File Server 的 Amazon FSx 或适用于 NetApp ONTAP 的 Amazon FSx 作为具有多个可用区的共享存储解决方案。有关更多信息,请参阅 Microsoft 文档中的 Always On 失效转移群集实例(SQL Server)
。 -
SIOS DataKeeper:SIOS DataKeeper 可以通过启用跨可用区和 AWS 区域的 SQL Server FCI 来帮助您满足高可用性和灾难恢复要求。SIOS DataKeeper 使用本地 Amazon Elastic Block Store(Amazon EBS)卷创建集群虚拟 SAN,并在可用区之间使用同步复制来实现高可用性,同时在区域之间使用异步复制以用于灾难恢复。有关更多信息,请参阅 SIOS 文档中的 Windows 应用程序的高可用性保护
。 -
分布式可用性组:分布式可用性组是一种特殊类型的可用性组,它跨越两个单独的 Always On 可用性组。可用性组可以位于两个不同的区域(例如
us-east-1和us-west-1)。您可以将分布式可用性组视为由多个可用性组组成的可用性组,因为其底层的 Always On 可用性组分别配置在两个不同的 WSFC 集群中。部署分布式可用性组需要 SQL Server 企业版。有关更多信息,请参阅 Microsoft 文档中的分布式可用性组。 -
日志传送:您可以实施日志传送来保护您在多个区域间的数据库,以防某个区域出现故障且不可用的情况发生。根据事务和日志传送频率,您能够在几分钟内实现 RPO 和 RTO。有关更多信息,请参阅 Microsoft 文档中的关于日志传送(SQL Server)
。 -
AWS Elastic Disaster Recovery:Elastic Disaster Recovery 是一种软件即服务(SaaS)应用程序,用于管理服务器从任何基础设施到 AWS 的复制,以实现灾难恢复。您还可以使用 Elastic Disaster Recovery 跨区域复制 SQL Server。Elastic Disaster Recovery 是一种基于代理的解决方案,它可以将整个虚拟机(包括操作系统、所有已安装的应用程序以及所有数据库)复制到一个暂存区域。有关更多信息,请参阅 Elastic Disaster Recovery 文档中的什么是 Elastic Disaster Recovery?。
-
AWS Database Migration Service(AWS DMS):AWS DMS 支持在 AWS 间实时迁移数据,包括不同的区域。您可以利用此功能在不同的区域中设置一个独立的 SQL Server 实例,将其用作灾难恢复数据库。有关更多信息,请参阅 AWS DMS 文档中的什么的 AWS Database Migration Service?。
SQL Server Always On 可用性组
如果您将 SQL Server 企业版仅用于高可用性的 Always On 可用性组
注意
有关不同 SQL Server 版本之间成本差异的其他信息,请参阅本指南的比较 SQL Server 版本部分。
设施特点:
-
在 SQL Server 标准版中可用
-
限制两个副本(主副本和辅助副本)
-
对辅助副本没有读取访问权限
-
对辅助副本没有进行完整性检查
限制
-
仅为每个可用性组支持一个可用性数据库
-
基本可用性组不能成为分布式可用性组的一部分
下图显示了 Windows Server 失效转移群集解决方案的示例架构。
SQL Server Always On 失效转移群集实例
您可以使用失效转移群集实例(FCI)来确保数据库的持续运行,同时最大限度地减少停机时间并降低数据丢失的风险。如果您希望您的 SQL Server 数据库具有高可用性,但又不想采用只读副本配置,那么 FCI 将为您提供一个可靠的解决方案。
与可用性组不同,FCI 无需使用 SQL Server 企业版即可提供可靠的失效转移解决方案。相反,FCI 只需要 SQL Server 标准版许可。您可以使用 FCI 将 SQL Server 的许可成本降低 65-75%。
注意
有关各 SQL Server 版本之间成本差异的其他信息,请参阅本指南的比较 SQL Server 版本部分。
请考虑以下事项:
-
适用于 Windows File Server 的 Amazon FSx 提供了一个强大的解决方案,以满足您的 SQL Server FCI 共享存储要求。您可以使用适用于 Windows File Server 的 FSx,以免需要购买存储复制解决方案的许可证以及自行管理共享存储。这可能会带来 30% 至 40% 的显著成本节省。有关更多信息,请参阅 AWS 存储博客中的利用适用于 Windows File Server 的 Amazon FSx 简化 Microsoft SQL Server 高可用性部署
一文。 -
借助软件保障权益摘要
(可下载的 PDF)和自带许可(BYOL)模型,只要辅助服务器处于被动状态,您就可以利用被动失效转移带来的好处。这可以节省 SQL 许可的成本,因为您无需向集群中的被动节点提供许可证。
以下图表显示了利用适用于 Windows File Server 的 FSx 的 SQL Server FCI 的示例架构。
SIOS DataKeeper
如果您计划在 AWS 上部署 SQL Server FCI,我们建议您考虑共享存储需求。传统的本地安装通常使用存储区域网络(SAN)来满足共享存储需求,但这在 AWS 上不是一个可行的选项。适用于 Windows File Server 的 Amazon FSx 是 AWS 上的 SQL Server FCI 的推荐存储解决方案,但它存在一些限制,致使无法在不同的 AWS 区域中添加集群服务器。
您可以使用 SIOS DataKeeper
以下列举了使用 SIOS DataKeeper 的一些额外优势,请予以考虑:
-
SIOS DataKeeper 通过利用本地 EBS 卷来创建一个集群式的虚拟 SAN,并在不同可用区之间采用同步复制以实现高可用性。为了实现灾难恢复,SIOS DataKeeper 在区域之间使用异步复制。
-
SIOS DataKeeper 通过使用 SQL Server 标准版来提供企业级的集群功能。与使用 SQL Server 企业版的 Always On 可用性组来实现高可用性相比,这能将 SQL Server 的许可成本降低 65% 至 75%。借助 SIOS DataKeeeper,您可以构建一个高度可用、灵活且经济高效的 SQL Server 环境,以满足您组织的需求。
注意
有关各 SQL Server 版本之间成本差异的其他信息,请参阅本指南的比较 SQL Server 版本部分。
以下图表展示了使用集群式虚拟 SAN 解决方案的 SQL Server FCI 的一个示例架构。
Always On 可用性组
您可以使用 Always On 可用性组来实现高可用性和灾难恢复的目的。您可以通过跨一个区域内的两个可用区部署 SQL Server 来实现高可用性。您可以通过跨区域扩展可用性组来实现灾难恢复。
以下图表展示了基于 Always On 可用性组的解决方案的示例架构。图中区域 1 中的副本采用了同步提交方式,这种方式能够实现可用性组的自动失效转移。区域 2 中的副本采用的是异步提交方式,这将需要对可用性组进行手动失效转移。
分布式可用性组
对于那些对可靠性或灾难恢复有着极高标准要求的任务关键型 SQL Server 部署而言,我们建议采用跨区域部署的方式。将您的可用性组分布到多个区域,是确保业务连续性、最大限度减少停机时间的最可靠解决方案。
该架构充分利用了适用于 Windows File Server 的 Amazon FSx 的各项功能,包括共享存储、同步块级复制以及 SQL Server FCI。这些功能使您能够创建一个跨多个可用区的高可用性 SQL Server 环境。通过在另一个区域复制这一设置,您将能够获得一个完全冗余的系统,该系统能够应对任何最严重的中断情况。该解决方案的与众不同之处在于其提供的灵活性和安全性。分布式可用性组独立于域的架构使得底层的 Windows 集群服务器能够加入不同的 Active Directory 域,而基于证书的身份验证则能为您的 SQL Server 环境提供最大程度的保护,并满足多区域 DR 策略的高 RTO 和 RPO 要求。有关构建多区域架构的信息,请参阅 AWS 架构博客》中的实地记录:利用 FCI 和分布式可用性组构建适用于 SQL Server 的多区域架构
以下图表展示了采用分布式可用性组的多区域解决方案的示例架构。
日志传送
日志传送是一种经过验证、可靠且经济高效的解决方案,可在出现意外停机情况时保障您在不同区域中的数据库安全。几十年来,各组织一直采用日志传送的方式来保护其数据。
如果您在 AWS 上实施日志传送,则可以在几分钟内实现 RPO 和 RTO,具体取决于事务和日志传送作业的频率。在极不可能出现的极端情况下,如果某个区域突然无法访问,则日志传送能确保您的数据安全且可恢复。
以下列举了使用日志传送的一些额外优势,请予以考虑:
-
使用日志传送实现跨区域的灾难恢复韧性,从而降低成本并满足您的业务需求。日志传送能降低您的总拥有成本,因为您只需购买 SQL Server 标准版或 SQL Server Web 版的许可证即可。
-
通过使用带有主动软件保障
的日志传送,取消灾难恢复/被动服务器的许可成本。当您使用基于软件保障的日志传送功能时,只有主要/活动的 SQL Server 需要被许可。 -
通过消除在不同区域之间设置分布式可用性组的 SQL Server 企业版需求,将 SQL Server 的许可成本降低 65% 至 75%。为此,您可以将 SQL Server 标准版和 SQL Server FCI 与日志传送功能结合使用,以满足您的灾难恢复要求。
注意
有关各 SQL Server 版本之间成本差异的其他信息,请参阅本指南的比较 SQL Server 版本部分。
有关更多信息,请参阅 AWS 架构博客中的通过适用于 Windows 的 Amazon FSx 配置使用 SQL Server FCI 的日志传送功能扩展 SQL Server DR
以下图表展示了日志传送解决方案的一个示例架构。
AWS Database Migration Service
您可以使用 AWS Database Migration Service(AWS DMS)根据您的应用程序需求设计 HA/DR 解决方案。AWS DMS 使您能够轻松地将数据复制到同一区域(HA)或不同区域(DR)的另一个 SQL Server 数据库中。这种方法在技术上是可行的,它能让您在 AWS 基础设施方面最大化您的投资,同时还能优化资源的利用效率。
AWS DMS 是一项经济高效的服务。您只需为传输过程中所使用的 CPU 资源以及任何额外的日志存储付费。这意味着,您可以从该解决方案中获益,同时无需承担过多额外费用。您可以使用 AWS DMS 来确保您的数据可用且可访问,同时还能将与许可及资源使用相关的成本降至最低。
以下图表展示了基于 AWS DMS 的解决方案的一个示例架构。
AWS Elastic Disaster Recovery
一些组织必须确保所有关键业务应用程序都已实施灾难恢复计划。过去,这些组织中有许多都大量投入资金用于传统的灾难恢复解决方案。这类方案要求您预先构建并维护一个完整的复制基础设施。这种方法成本高昂、耗时长且难以扩展。
现在,您可以使用 AWS Elastic Disaster Recovery 来省去预先构建灾难恢复基础设施的步骤。在 Elastic Disaster Recovery 中,灾难恢复设备仅在必要时才会启动。因此,您只需按实际使用量在您需要它时付费。这意味着您能够显著降低软件许可费用和高性能计算成本。
此外,灾难恢复解决方案的暂存区域还包含低成本的 Amazon Elastic Block Store(Amazon EBS)卷。EBS 卷进一步降低了预调配重复资源的成本。这使您能够降低总体的灾难恢复成本,同时仍能维护一个强大且可靠的灾难恢复方案,满足您的业务需求。您可以使用 Elastic Disaster Recovery 来专注于核心业务活动,与此同时,AWS 为您的灾难恢复解决方案处理底层基础设施。
对于 SQL Server,您可以将 Elastic Disaster Recovery 用作经济高效的灾难恢复选项。如果您使用主动式软件保障服务,那么在具有容错能力且高度可用的 SQL Server 架构中,被动节点的许可费用将包含在内。然而,您仍需支付计算费用才能让该被动服务器保持在线状态。借助 Elastic Disaster Recovery,主服务器可以复制到灾难恢复环境中,而无需保持软件保障的活跃状态,也无需支付灾难恢复的计算费用。这种节省组合可以将您的 SQL Server 灾难恢复成本降低 50% 或更多。
以下图表展示了基于 Elastic Disaster Recovery 的解决方案的一个示例架构。
有关更多信息,请参阅 AWS 博客上的如何在 Microsoft 工作负载上为使用 AWS Elastic Disaster Recovery 恢复的 DR 站点中的 SQL Server 设置高可用性
成本比较
以下表格对本部分所介绍的 HA/DR 解决方案的成本进行了比较。为进行此次比较,我们做出了以下假设:
-
实例类型:r5d.xlarge
-
许可证类型:包括适用于 Windows 和 SQL Server 的许可证
-
区域 ‐
us-east-1
| 解决方案 | 高可用性 | 灾难恢复 | 企业版 | 标准版 | 成本 |
|---|---|---|---|---|---|
| 日志传送 | 否 | 是 | 是 | 是 | SQL Server 企业版:32674.8 美元(2 个节点) SQL Server 标准版:14804.4 美元(2 个节点) |
| Always On 可用性组 | 支持 | 是 | 是 | 是,但为基本可用性组(2 个节点) | SQL Server 企业版:32674.8 美元(2 个节点) SQL Server 标准版:14804.4 美元(2 个节点) |
| Always On FCI | 是 | 否 | 是 | 是(2 个节点) | SQL Server 标准版:14804.4 美元 |
| 分布式可用性组 | 支持 | 是 | 是 | 否 | SQL Server 企业版:65349.6 美元(4 个节点) |
| 弹性灾难恢复 | 否 | 是 | 是 | 是 | 复制 1 个实例和 1TB 存储空间的费用约为 107.48 美元/月 注意:Elastic Disaster Recovery 根据每台复制服务器按小时计费。无论磁盘数量、存储大小、执行演练或恢复操作的次数,还是您正在复制的区域如何,费用都是相同的。 |
| SIOS Data Keeper | 支持 | 是 | 是 | 是 | 具有软件保障的 Always On 可用性组(2 个节点,24 个内核):213480 美元 在具有 SIOS DataKeeper 和软件保障的 SQL Server 标准版上运行的双节点 SQL Server 集群:61530 美元(2 个节点) |
| AWS DMS | 否 | 是 | 是 | 是 | r5.xlarge 实例和 1TB 存储费用为 745.38 美元/月 |
成本优化建议
我们建议您接下来采取以下步骤,以选择符合您组织需求的 HA/DR 解决方案:
-
请查看本指南的为 SQL Server 工作负载选择合适的 EC2 实例部分。
-
通过在工作负载高峰期运行性能计数器,来确定您的工作负载的 IOPS 和吞吐量要求:
-
IOPS = 磁盘读取次数/秒 + 磁盘写入次数/秒
-
吞吐量 = 磁盘读取字节/秒 + 磁盘写入字节/秒
-
-
请使用以下存储卷类型以获得更好的性能和成本节省:
-
用于
tempdb和缓冲池扩展的 NVMe 实例存储 -
用于数据库文件的 io2 卷
-
-
使用 AWS Trusted Advisor 获取有关 Amazon EC2 上的 SQL Server 成本优化的建议。您无需安装 Trusted Advisor 的代理即可进行 SQL Server 优化检查。Trusted Advisor 会检查包含您的 Amazon EC2 SQL Server 许可证的实例配置,例如虚拟 CPU(vCPU)、版本。然后,Trusted Advisor 根据最佳实践提出建议。
-
将 AWS Compute Optimizer 用于 Amazon EC2 实例和 Amazon EBS 适当调整大小的建议。
-
使用 AWS 定价计算器
设计用于成本估算的 HA/DR 策略。 -
要确定从 SQL Server 企业版降级到 SQL Server 标准版是否是一个可行的选择,可使用 sys dm_db_persisted_sku_features
动态管理视图来识别在当前数据库中处于活动状态的版本特定功能。 注意
使用包含许可证的 EC2 实例时,要更改 SQL Server 版本,则需要进行并行迁移。
-
每半年或每年进行一次灾难恢复演练,以便更好地制定设计方案,确保能够按照既定的 RTO 和 RPO 恢复数据库。这还能帮助您发现任何可能存在的架构缺陷。
其他资源
-
使用适用于 Windows File Server 的 Amazon FSx 简化 Microsoft SQL Server 高可用性部署
(AWS 存储博客) -
现场说明:使用 FCI 和分布式可用性组为 SQL Server 构建多区域架构
(AWS 架构博客) -
在 AWS 上为 SQL Server 架构灾难恢复:第 1 部分
(AWS 数据库博客) -
将您的本地存储模式与 AWS 存储服务进行比较
(AWS 存储博客) -
计划将数据中心 NAS 替换为 Amazon FSx 文件网关
(AWS 存储博客) -
优化 AWS 上的高可用性 SQL Server 部署的成本
(AWS 存储博客) -
如何使用 AWS Elastic Disaster Recovery 为 SQL Server Always On 可用性组设置灾难恢复
(AWS 上的 Microsoft 工作负载) -
如何为使用 AWS Elastic Disaster Recovery 恢复的 DR 站点中的 SQL Server 设置高可用性
(AWS 上的 Microsoft 工作负载)