适用于 Azure VM 上的 SQL Server 的业务连续性和 HADR
本文将可用于高可用性和灾难恢复 (HADR) 的仅限 Azure 和混合业务连续性解决方案与 Azure 虚拟机 (VM) 上的 SQL Server 进行了比较
业务连续性意味着在发生灾难时继续你的业务、规划恢复以及确保数据高度可用。 Azure 虚拟机上的 SQL Server 可以帮助降低高可用性和灾难恢复 (HADR) 数据库解决方案的成本。
概述
Azure VM 上的 SQL Server 支持下列类型的解决方案:
- 仅限 Azure:整个 HADR 系统都在 Azure 中运行。
- 混合:解决方案的一部分在 Azure 中运行,另一部分则在组织的本地运行。
Azure 环境具有灵活性,允许部分或完全迁移至 Azure,以满足 SQL Server 数据库系统对于预算和 HADR 的要求。 你负责确保数据库系统具有 HADR 功能,以满足恢复时间目标 (RTO)、恢复点目标 (RPO) 和服务级别协议 (SLA) 的业务要求。
Azure 提供的内置高可用性机制(例如,云服务的服务修复和虚拟机的故障恢复检测)并不保证你能够达到 SLA、RTO 或 RPO 的要求。 虽然这些机制可以帮助保护虚拟机的高可用性,但不能保护在 VM 内部运行的 SQL Server 的可用性。 VM 联机并正常运行时,SQL Server 实例也可能会出故障。 即便是 Azure 提供的高可用性机制,也会在 VM 遇到从软件或硬件故障进行恢复、操作系统升级等事件时,为其留出一定的停机时间。
业务连续性功能
下表列出了可用于高可用性 (HA)、灾难恢复 (DR) 或两者 (HA/DR) 的仅限 Azure 和混合 SQL Server 功能:
在仅限 Azure 配置或混合配置中都支持这些 SQL Server 功能来实现业务连续性。 某些选项非常适合高可用性和灾难恢复 (HA/DR)、高可用性 (HA),而另一些选项则用于灾难恢复 (DR)。
SQL Server 功能 | HA/DR 选项 | 详细信息 |
---|---|---|
AlwaysOn 可用性组 | 高可用性和灾难恢复 | 通过在不同的可用性区域和/或区域中添加副本,提供数据库级别的保护,提高高可用性和灾难恢复。 |
Always On 故障转移群集实例 (FCIs) | 高可用性 | 使用共享存储在实例级别提供保护。 通过与可用性组相结合,提高对数据库和实例级别的保护。 |
日志传送 | 灾难恢复 | 数据库级别的灾难恢复保护涉及从主服务器发送事务日志备份并将其还原到辅助服务器。 需要 Azure 文件共享。 |
使用 Azure Blob 存储执行 SQL Server 备份和还原 | 灾难恢复 | 生产数据库备份存储在 Azure Blob 存储中,用于灾难恢复保护。 |
Azure Site Recovery | 灾难恢复 | 将 VM 从主站点复制到辅助站点的灾难恢复解决方案。 |
可将多种技术配合使用,以实现具有高可用性和灾难恢复功能的 SQL Server 解决方案。 根据所用技术的不同,混合部署可能需要使用 VPN 隧道连接 Azure 虚拟网络。 虽然这些技术是相同的,但它们在 Azure 或混合设计中的设置方式可能存在一些差异。
可用性组 (HADR)
可以使用可用性组作为高可用性和灾难恢复 (HADR) 解决方案,在数据库级别保护 Azure VM 上的 SQL Server。 在同一区域的 Azure VM 中运行的副本提供了高可用性。 由于 Windows 故障转移群集需要 Active Directory 域,因此需要域控制器 VM。
要开始,请查看可用性组教程。
为了实现更高的冗余、可用性和灾难恢复保护,可以按照可用性组概述中的说明,将 Azure VM 部署到不同的可用性区域。 将可用性副本扩展到跨 Azure VM 中的多个数据中心运行,进一步增加了灾难恢复覆盖范围。 跨区域解决方案可帮助防止站点完全中断。
在一个区域内,所有副本应该位于同一云服务和同一虚拟网络中。 由于每个区域具有单独的虚拟网络,因此这些解决方案需要网络间连接。 有关详细信息,请参阅使用 Azure 门户配置网络间连接。 有关详细说明,请参阅在不同的 Azure 区域中配置 SQL Server Always On 可用性组。
在混合配置中,某些可用性副本在 Azure VM 中运行,其他副本在本地运行,以实现跨站点灾难恢复。 生产站点可位于本地,也可以位于 Azure 数据中心。
由于所有可用性副本必须在同一故障转移群集中,因此该群集必须同时跨越这两个网络(多子网故障转移群集)。 此配置需要在 Azure 与本地网络之间使用 VPN 连接。
为了成功地对数据库进行灾难恢复,还应在灾难恢复站点上安装副本域控制器。 要开始,请查看可用性组教程。
故障转移群集实例 (HA)
Azure VM 上的 SQL Server 支持故障转移群集实例 (FCI),此解决方案在实例级别提供高可用性。 为了获得额外保护,可以通过在故障转移群集实例上创建可用性组,在数据库和实例级别创建冗余。 FCI 功能需要共享存储,有五种解决方案可用于 Azure VM 上的 SQL Server:
对于 Windows Server 2019,使用 Azure 共享磁盘。 共享托管磁盘是一种允许同时将托管磁盘附加到多个虚拟机的 Azure 产品。 群集中的 VM 可以根据群集应用程序通过 SCSI 永久预留 (SCSI PR) 选择的预留在附加的磁盘中进行读取或写入。 SCSI PR 是一种行业标准的存储解决方案,可供在本地存储区域网络 (SAN) 上运行的应用程序使用。 在托管磁盘上启用 SCSI PR,可以将这些应用程序按原样迁移到 Azure。
对于 Windows Server 2016 及更高版本,使用存储空间直通 S2D 提供基于软件的虚拟 SAN。
对于 Windows Server 2012 及更高版本,使用高级文件共享。 高级文件共享由 SSD 提供支持,延迟稳定且较低,完全支持用于 FCI。
对于经由 Azure ExpressRoute 的远程 iSCSI 目标,使用共享块存储。 例如,NetApp 专用存储 (NPS) 使用 Equinix 通过 ExpressRoute 向 Azuer VM 公开 iSCSI 目标。
若要开始,请为 FCI 准备 VM。
日志传送 (DR)
Azure 中的另一个灾难恢复解决方案是日志传送,它自动将主服务器上主数据库中的事务日志备份发送到单独辅助服务器上的一个或多个辅助数据库中。 日志传送的配置使用 Azure 文件共享来存储事务日志备份。
如果需要在混合环境中配置日志传送,则一台服务器位于 Azure VM 上,另一台服务器在本地进行跨站点灾难恢复。 日志传送依赖于 Windows 文件共享,因此需要在 Azure 虚拟网络与本地网络之间使用 VPN 连接。
为了成功地对数据库进行灾难恢复,还应在灾难恢复站点上安装副本域控制器。
备份和还原 (DR)
备份生产数据库对于灾难恢复是必要的。 在 Azure 中,可以将数据库直接备份到不同数据中心的 Blob 存储中以进行灾难恢复。
在混合解决方案中,本地生产数据库可以直接备份到 Azure Blob 存储,以进行灾难恢复。
有关详细信息,请参阅 Azure 虚拟机上 SQL Server 的备份和还原。
使用 Azure Site Recovery 进行复制 (DR)
Azure Site Recovery 可以在 Azure 和混合配置中用作灾难恢复解决方案。
在 Azure 内部,一个 Azure 数据中心中的生产 SQL Server 实例被直接复制到其他 Azure 数据中心中的 Azure存储,以进行灾难恢复。
对于混合环境,将本地生产 SQL Server 实例直接复制到 Azure 存储以进行灾难恢复。
有关详细信息,请参阅使用 SQL Server 灾难恢复和 Azure Site Recovery 来保护 SQL Server。
Azure 中的免费 DR 副本
如果具有软件保障,可以使用 SQL Server 实现混合灾难恢复 (DR) 计划,且不会因被动灾难恢复实例产生额外的许可费用。 如果所有副本都托管在 Azure 中,则还可通过“即用即付”许可方式获得免许可的 DR 副本。
例如,可以拥有两个免费被动次要副本,前提是所有三个副本全在 Azure 中托管:
也可以在 Azure 中配置一个混合故障转移环境,其中包含一个许可的主要本地副本、一个用于实现 HA 的免费被动副本、一个用于 DR 的免费本地被动副本和一个用于 DR 的免费被动副本:
有关详细信息,请参阅产品许可条款。
要启用此权益,请转到 SQL Server 虚拟机资源。 在“设置”下选择“配置”,在“SQL Server 许可证”下选择“HA/DR”,然后选择“应用”以保存设置。 当所有三个副本都托管在 Azure 中时,即用即付客户也有权使用 HA/DR 许可证类型。
有关 Azure 中的 SQL Server HADR 的重要注意事项
Azure VM、存储和网络的运行特征与本地非虚拟化的 IT 基础结构不同。 需要了解这些区别并设计可适应这些区别的解决方案,才能成功地在 Azure 中实现 HADR SQL Server 解决方案。
可用性集中的高可用性节点
使用 Azure 中的可用性集,可以将高可用性节点放置在单独的容错域和更新域中。 Azure 平台为可用性集中的每个虚拟机分配一个更新域和一个容错域。 数据中心内的这种配置可以确保在发生计划内或计划外维护事件时,至少有一个虚拟机可用,并满足 99.95% 的 Azure SLA 要求。
若要配置高可用性设置,请将所有参与的 SQL Server 虚拟机放在同一可用性集中,以避免在维护事件期间丢失应用程序或数据。 只有同一云服务中的节点可加入同一可用性集。 有关详细信息,请参阅管理虚拟机的可用性。
可用性区域中的高可用性节点
可用性区域是 Azure 区域中独特的物理位置。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源以及散热和网络设备。 区域内可用性区域的物理隔离通过确保至少有一个虚拟机可用且 Azure SLA 的可用性达 99.99%,来帮助保护应用程序和数据免受数据中心故障的影响。
若要配置高可用性,请将参与的 SQL Server 虚拟机分散到该区域中的各个可用性区域。 可用性区域之间的网络到网络传输会产生额外的费用。 有关详细信息,请参阅可用性区域。
混合 IT 环境中的网络延迟
在部署 HADR 解决方案时,请假设本地网络和 Azure 之间有时可能会存在很高的网络延迟。 将副本部署到 Azure 时,同步模式应使用异步提交而非同步提交。 当你同时在本地和 Azure 中部署数据库镜像服务器时,请使用高性能模式,而非高安全模式。
请参阅 HADR 配置最佳做法,了解有助于适应云环境的群集和 HADR 设置。
异地复制支持
Azure 磁盘中的异地复制不支持将同一数据库的数据文件和日志文件各自存储在不同的磁盘上。 GRS 独立并异步地复制对每个磁盘的更改。 此机制可保证单个磁盘中异地复制副本上的写顺序,但不能保证多个磁盘的异地复制副本上的写顺序。 如果将数据库配置为将其数据文件和日志文件各自存储在不同的磁盘上,则灾难后恢复的磁盘所含的数据文件副本可能比日志文件副本新,而这违反了 SQL Server 中的预写日志以及事务的 ACID 属性(原子性、一致性、隔离性和持久性)。
如果无法对存储帐户禁用异地复制,请将数据库的所有数据和日志文件都保留在同一磁盘上。 如果因数据库较大而必须使用多个磁盘,请部署之前列出的某个灾难恢复解决方案以确保数据冗余。
后续步骤
确定适合你的业务的最佳业务连续性解决方案是可用性组还是故障转移群集实例。 然后,查看针对高可用性和灾难恢复配置环境的最佳做法。