首页
学习
活动
专区
圈层
工具
发布

SQL Server 双机热备怎么做?

SQL Server 是微软生态下应用最广泛的关系型数据库,在企业 ERP、CRM、OA 等系统中大量部署。SQL Server 的高可用方案可以借助数据库自身的 Always On 技术栈实现,也可以通过操作系统层面的高可用软件实现。两条路径各有适用场景,选型取决于 SQL Server 的版本、许可模式以及对自动化和统一管理的需求。

一、基于 SQL Server Always On 的高可用方案

SQL Server 从 2012 版本开始引入了 Always On 可用性组(Availability Groups),并在后续版本中持续增强。Always On 是微软推荐的 SQL Server 高可用和灾备技术栈,包含两个核心组件:故障转移群集实例(FCI)和可用性组(AG)。

1.1 故障转移群集实例(FCI)

FCI 是 SQL Server 的传统高可用方案,基于 Windows Server 故障转移群集(WSFC)运行。

工作原理:两台或多台服务器加入到同一个 WSFC 群集中。SQL Server 作为群集资源安装在每个节点上,但同一时刻只有一个节点运行 SQL Server 实例。实例的数据文件存储在共享磁盘阵列上,所有节点均可访问。当活动节点故障时,WSFC 自动将 SQL Server 资源和共享存储转移至群集中的另一健康节点,并在该节点上启动 SQL Server 服务。

FCI 方案的核心优势在于:数据库文件只有一份,不存在数据复制和数据一致性问题;切换过程对客户端透明——客户端通过虚拟网络名称访问 SQL Server,无需感知后台节点变化;从 SQL Server 2008 起即支持,版本兼容性最好。

FCI 方案的核心局限在于:必须依赖共享存储,不具备共享存储条件的机房无法部署;SQL Server 标准版仅支持两节点 FCI,企业版才支持多节点;FCI 保护的是整个 SQL Server 实例,粒度较粗——实例内任一数据库故障不触发切换。

1.2 Always On 可用性组(AG)

可用性组是 SQL Server 2012 企业版引入的数据库级高可用和灾备方案,在 2016 版本后部分功能下放至标准版(Basic Availability Groups,限制为单个数据库)。

工作原理:定义一个可用性组,包含一组需要共同保护的数据库(可用性数据库)。每个可用性数据库在主副本(Primary Replica)上接受读写操作,在辅助副本(Secondary Replicas)上通过事务日志同步实现数据同步。辅助副本可以配置为只读访问,分担查询负载。

可用性组支持两种提交模式:同步提交模式下,主副本上的事务提交必须等待至少一个辅助副本确认日志已落盘,RPO 为零;异步提交模式下,主副本不等待辅助副本确认,RPO 为秒级,但主副本性能不受辅助副本网络延迟影响。

可用性组相比 FCI 的核心差异在于:数据保护粒度是数据库级而非实例级;不需要共享存储,各副本使用本地磁盘;辅助副本可配置为只读,实现读写分离;支持最多 8 个辅助副本(企业版),可实现本地高可用和异地灾备的统一架构。

可用性组的局限在于:需要 SQL Server 企业版(核心功能)或特定标准版(Basic AG),许可成本较高;配置和运维复杂度高于 FCI;依赖 WSFC 作为底层群集基础设施,在无域环境下部署复杂度增加。

1.3 分布式可用性组

SQL Server 2016 引入的分布式可用性组(Distributed AG)是跨可用性组的复制机制,主要用于跨地理区域的灾备场景。分布式 AG 可以将主数据中心 AG 的数据变更异步复制到灾备数据中心的另一个 AG,两者各自拥有独立的 WSFC 群集。分布式 AG 不要求两端在同一 WSFC 域内,适合跨数据中心的部署。

二、基于高可用软件的双机热备方案

Always On 方案虽然功能强大,但在以下场景中存在短板:SQL Server 标准版环境下 FCI 的两节点限制和 Basic AG 的单数据库限制;非 Windows 域环境下 WSFC 的部署和运维复杂度;需要同时保护 SQL Server 和其他非数据库应用(如 ERP 应用服务、文件共享)的统一高可用管理需求;信创环境下运行在国产操作系统和国产 CPU 上的 SQL Server 兼容版本。

在这些场景中,通过操作系统层面的高可用软件管理 SQL Server 提供了不受 SQL Server 版本和授权模式限制的替代路径。

2.1 共享存储方案

两台服务器通过 FC、SAS 或 iSCSI 链路连接至同一磁盘阵列。SQL Server 的数据库文件(MDF、NDF、LDF)存储在阵列的共享逻辑卷上。高可用软件(如 RoseHA)负责监控服务器状态和 SQL Server 服务状态,故障时自动将逻辑卷和虚拟 IP 转移至备用节点并启动 SQL Server。

此方案与 FCI 的实现逻辑类似,但不依赖 WSFC。对于运行 SQL Server 标准版的客户,此方案不受两节点限制;对于非 Windows 域环境下的部署,消除了对域控制器的依赖。

2.2 纯软件镜像方案

在不具备共享存储的环境中,两台服务器使用本地磁盘,高可用软件(如 RoseMirrorHA)通过镜像驱动实时同步 SQL Server 数据目录。活动节点的数据库写入操作通过驱动捕获并传输至备用节点。切换时备用节点确认数据完整性后启动 SQL Server。

镜像方案在 SQL Server 单实例的保护中尤为实用——许多中小企业的 SQL Server 部署规模仅为单实例、数个数据库,搭建完整 FCI 的投入产出比不高。镜像方案以更低的硬件和许可成本实现了同等的自动切换效果。

2.3 跨平台方案

Always On 方案依赖 Windows 环境。对于逐步向 Linux 迁移 SQL Server 工作负载的企业(SQL Server 2017 起支持 Linux),或者运行 SQL Server 国产化兼容版本的信创环境,跨平台高可用软件是统一管理的有效工具。RoseHA 和 RoseMirrorHA 均支持 Windows 和 Linux 双平台,可在异构环境下用同一套管理平台完成对所有 SQL Server 实例的高可用管理。

三、3种方案对比

四、选型决策建议

SQL Server 双机热备方案的选型应基于 SQL Server 版本和许可的既有条件。

场景一:已购置 SQL Server 企业版,且环境为 Windows 域。 Always On AG 是最优方案。AG 不仅提供自动故障切换和零数据丢失(同步模式),还天然支持读写分离和多副本灾备。此为 SQL Server 官方推荐的高可用架构。

场景二:SQL Server 标准版,机房具备共享存储。 两个方向均可。FCI 是微软官方路径,无需额外软件许可,但依赖 WSFC 和域环境。高可用软件(如 RoseHA)是不依赖 WSFC 的替代路径,对于非域环境或简化管理需求的场景更为适用。

场景三:SQL Server 标准版,机房不具备共享存储。 Always On Basic AG 和高可用软件镜像方案均可实现。Basic AG 受限于单数据库保护,若需要保护多个数据库或多个非数据库应用,高可用软件镜像方案在覆盖面上更为完整。

场景四:需要统一保护 SQL Server 和其他应用。 高可用软件方案是唯一选项。FCI 和 AG 只能保护 SQL Server 本身,无法保护同一台服务器上运行的 ERP 应用服务、中间件或文件共享。如果目标是一套高可用方案覆盖全部业务组件,操作系统层面的高可用软件具有不可替代性。

场景五:信创环境或混合操作系统环境。 如果 SQL Server 部署在国产操作系统上,或需要在 Windows 和 Linux 之间统一管理,Always On 方案存在兼容性限制。跨平台的第三方高可用软件是信创和异构环境下更灵活的选择。

五、SQL Server 双机热备的关键注意事项

MSDTC(分布式事务协调器)的处理。 如果业务系统依赖分布式事务(如跨数据库的事务操作),MSDTC 服务必须纳入高可用保护。在共享存储方案中,MSDTC 的日志文件应存储在共享阵列上;在镜像方案中,MSDTC 日志目录应纳入镜像范围。

SQL Server Agent 作业的接管。 SQL Server Agent 中配置的定时作业(备份、维护计划、数据清理等)在切换后需要在备用节点上自动启动。切换脚本中应包含 SQL Server Agent 服务的启动指令和作业状态的验证步骤。

TempDB 的存储位置。 TempDB 是 SQL Server 用于存储临时对象和中间结果的系统数据库。在共享存储方案中,TempDB 数据文件可与用户数据库同置于共享阵列。在镜像方案中,TempDB 不需要镜像,因为 TempDB 在每次 SQL Server 启动时都会重建。

连接字符串中的应用程序意图(Application Intent)。 在 Always On AG 环境中,连接字符串可以通过设置 `ApplicationIntent=ReadOnly` 参数将读请求自动路由至可读辅助副本。在高可用软件方案中,这一能力需要通过额外配置(如为只读操作配置独立的虚拟 IP)来实现。

六、总结

SQL Server 的双机热备有三种主流实现路径。Always On FCI 基于共享存储提供实例级保护,Always On AG 基于事务日志同步提供数据库级保护和高可用灾备统一架构,高可用软件方案则不受 SQL Server 版本和授权模型限制,在非域环境、标准版、混合操作系统和信创场景中提供了灵活的替代选项。

不存在绝对的最优方案,只有与 SQL Server 版本、许可模式、基础设施条件和统一管理需求最匹配的方案。在选型前,建议先梳理清楚 SQL Server 实例的版本和授权现状、未来可能的扩展方向、以及是否需要统一保护非数据库业务组件,这三点决定了方案的起点和边界。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OG-87Bb0_0vBrXzw3qXj9Eng0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券