适用范围:SQL Server
SQL Server 始终可用故障转移群集实例使用 Windows Server 故障转移群集 (WSFC) 来提供本地高可用性。 故障转移群集实例 (FCI) 在服务器实例级别实施冗余。 FCI 是一个 SQL Server 实例,它安装在 Windows Server 群集节点中,并且可能跨多个子网安装。 在网络中,FCI 显示为在单台计算机上运行的 SQL Server 实例,不过它提供了从一个 WSFC 节点到另一个 WSFC 节点的故障转移(如果当前节点不可用)。
FCI 可利用 Always On 可用性组提供数据库级别的远程灾难恢复。 有关详细信息,请参阅故障转移群集和 AlwaysOn 可用性组(SQL Server)。
SQL Server 故障转移群集实例支持 Windows Server 2016 Datacenter 版中引入的群集存储资源的存储空间直通。 有关详细信息,请参阅 Windows Server 中的存储空间直通。
故障转移群集实例还支持群集共享卷(CSV)。 有关详细信息,请参阅 了解故障转移群集中的群集共享卷。
注意
SQL Server 2025 (17.x) 预览版引入了对强制与故障转移群集实例 的严格连接 的支持。
故障转移群集实例的优点
出现服务器硬件或软件故障时,连接到服务器的应用程序或客户端将经历停机。 冗余节点在作为 FCI 而不是独立实例时保护 SQL Server 实例的可用性。 在 FCI 中,一次只能有一个节点拥有 WSFC 资源组。 如果发生故障(例如硬件故障、作系统故障、应用程序或服务故障),或者在计划内升级期间,群集会将资源组所有权移到另一个 WSFC 节点。 此过程对连接到 SQL Server 的客户端或应用程序是透明的。 此过程将应用程序或客户端在故障期间遇到的停机时间降到最低。 下面是 SQL Server 故障转移群集实例提供的一些主要优势:
在实例级别通过冗余提供保护。
发生故障时自动故障转移(硬件故障、作系统故障或应用程序和服务故障)。
重要
在可用性组中,不支持从 FCI 自动故障转移到可用性组中的其他节点。 因此,如果自动故障转移是高可用性解决方案的重要组成部分,则可用性组中不应将 FCI 和独立节点耦合在一起。 不过,对于灾难恢复解决方案而言,可以进行此类结合使用。
支持广泛的存储解决方案,包括 WSFC 群集磁盘(iSCSI、光纤通道等)和服务器消息块(SMB)文件共享。
通过多子网 FCI 或运行可用性组内的 FCI 托管数据库进行灾难恢复。 借助 SQL Server 2012 (11.x)中的多子网支持,多子网 FCI 不需要虚拟 LAN。 此支持增加了多子网 FCI 的可管理性和安全性。
故障转移过程中无需重新配置应用程序和客户端。
用于实现自动故障转移的针对精细触发器事件的灵活故障转移策略。
通过使用专用连接和持久连接定期执行详细运行状况检测,实现可靠的故障转移。
通过间接后台检查点在故障转移期间实现可配置性和可预测性。
故障转移期间限制对资源的使用。
建议
在生产环境中,将静态 IP 地址与故障转移群集实例的虚拟 IP 地址结合使用。
请勿在生产环境中使用 DHCP。 如果停机,如果 DHCP IP 租约过期,则需要额外的时间重新注册与 DNS 名称关联的新 DHCP IP 地址。
故障转移群集实例概述
FCI 会在具有一个或多个 WSFC 节点的 WSFC 资源组中运行。 当 FCI 启动时,这些节点中的某个节点将获取该资源组的所有权并使其 SQL Server 实例处于联机状态。 此节点拥有的资源包括:
- 网络名称
- IP 地址
- 共享磁盘
- SQL Server 数据库引擎服务
- SQL Server 代理服务
- SQL Server Analysis Services 服务(如果已安装)
- 一个文件共享资源(如果安装了 FILESTREAM 功能)
任何时候,只有资源组所有者(而非 FCI 中的任何其他节点)将在资源组中运行各自的 SQL Server 服务。 发生故障转移时,无论是自动故障转移还是计划内故障转移,都会发生以下事件序列:
除非出现硬件或系统故障,否则会将缓冲区缓存中的所有脏页写入磁盘。
资源组中所有相应的 SQL Server 服务都将在活动节点上停止。
资源组所有权将转移到 FCI 中的另一个节点。
新资源组所有者将启动其 SQL Server 服务。
客户端应用程序连接请求使用同一虚拟网络名称自动定向到新的活动节点。
只要 FCI 的基础 WSFC 群集处于良好的仲裁运行状况,FCI 就处于联机状态。 (大多数仲裁 WSFC 节点都可用作自动故障转移目标。当 WSFC 群集丢失仲裁时,无论是由于硬件、软件还是网络故障或不正确的仲裁配置,整个 WSFC 群集以及 FCI 都处于脱机状态。 在此计划外故障转移方案中,需要手动干预以在剩余可用节点中重新建立仲裁,以使 WSFC 群集和 FCI 重新联机。 有关详细信息,请参阅 WSFC 仲裁模式和投票配置(SQL Server)。
可预测的故障转移时间
根据 SQL Server 实例上次执行检查点操作的时间,缓冲区缓存中可能存在大量脏页。 因此,故障转移持续的时间取决于将剩余脏页写入磁盘的时间,这会导致不可预测的较长的故障转移时间。 从 SQL Server 2012(11.x)开始,FCI 可以使用间接检查点来限制缓冲区缓存中保留的脏页数。 尽管这会在常规工作负荷下消耗更多资源,但它会使故障转移时间更具可预测性且更易于配置。 当组织中的服务级别协议为高可用性解决方案指定恢复时间目标(RTO)时,这非常有用。 有关详细信息,请参阅 间接检查点。
可靠的运行状况监视和灵活的故障转移策略
成功启动 FCI 后,WSFC 服务会监视基础 WSFC 群集的运行状况和 SQL Server 实例的运行状况。 从 SQL Server 2012(11.x)开始,WSFC 服务使用专用连接通过系统存储过程轮询活动 SQL Server 实例以获取详细的组件诊断。 产生三种影响:
利用与 SQL Server 实例的专用连接,始终能够对组件诊断信息进行可靠轮询,即使在 FCI 负荷较重时也是如此。 利用此功能,可以区分负载过重的系统以及故障条件的系统,从而防止出现错误故障转移等问题。
通过详细的组件诊断,可以配置更灵活的故障转移策略,从而选择哪些故障条件会触发故障转移。
利用详细组件诊断信息,还可以通过追溯方式更好地对自动故障转移进行故障排除。 诊断信息将存储到与 SQL Server 错误日志并置的日志文件中。 可以将它们加载到日志文件查看器中,以检查导致故障转移发生的组件状态,以确定导致故障转移的原因。
有关详细信息,请参阅 故障转移群集实例的故障转移策略。
配置 TLS 1.3 加密
SQL Server 2025 (17.x) 预览版引入了 TDS 8.0 支持,它允许强制实施 TLS 1.3 加密,以便在 Windows Server 故障转移群集与故障转移群集实例之间进行通信。
若要开始,请查看 使用严格的加密进行连接。
注意
如果计算机上禁用 TLS 1.2,SQL Server 2025 (17.x) 预览版故障转移群集实例的安装将会失败。
故障转移群集实例的元素
FCI 由一组物理服务器(节点)组成,其中包含类似的硬件配置,以及包含作系统版本和修补程序级别的相同软件配置,以及 SQL Server 版本、修补程序级别、组件和实例名称。 需要相同的软件配置,以确保 FCI 在节点之间故障转移时能够完全正常运行。
WSFC 资源组
SQL Server FCI 在 WSFC 资源组中运行。 资源组中的每个节点都维护配置设置和检查点注册表项的同步副本,以确保故障转移后 FCI 的完整功能。 群集中一次只有一个节点拥有资源组(活动节点)。 WSFC 服务除了 FCI 的虚拟网络名称和虚拟 IP 地址外,还管理服务器群集、仲裁配置、故障转移策略和故障转移作。 如果发生故障(硬件故障、作系统故障或应用程序和服务故障)或计划的升级,资源组所有权将移动到 FCI 中的另一个节点。 WSFC 资源组中支持的节点数取决于 SQL Server 版本。 另外,同一个 WSFC 群集可运行多个 FCI(多个资源组),具体取决于您的硬件能力(如 CPU、内存和磁盘数)。
SQL Server 二进制文件
产品二进制文件安装在 FCI 的每个节点上,此过程类似于 SQL Server 独立安装。 但是,在启动期间,服务不会自动启动,而是由 WSFC 管理。
存储
与可用性组不同,FCI 必须在 FCI 的所有节点之间使用共享存储来存储数据库和日志存储。 共享存储可以采用 WSFC 群集磁盘、SAN 上的磁盘、存储空间直通或 SMB 上的文件共享的形式。 因此,每当发生故障转移时,FCI 中的所有节点都具有相同的实例数据视图。 但是,这意味着共享存储有可能成为单一故障点,并且 FCI 依赖于基础存储解决方案来确保数据保护。
网络名称
FCI 的虚拟网络名称为 FCI 提供统一的连接点。 此统一连接点允许应用程序连接到虚拟网络名称,而无需知道当前活动节点。 发生故障转移时,虚拟网络名称会在启动后注册到新的活动节点。 此过程对连接到 SQL Server 的客户端或应用程序是透明的,它最大限度地减少了应用程序或客户端在故障期间遇到的停机时间。
以下屏幕截图显示了故障转移群集管理器中故障转移群集实例的网络名称:
虚拟 IP
对于多子网 FCI,将为 FCI 中的每个子网分配一个虚拟 IP 地址。 在故障转移期间,DNS 服务器上的虚拟网络名称将更新为指向相应子网的虚拟 IP 地址。 然后,应用程序和客户端可以在多子网故障转移后使用相同的虚拟网络名称连接到 FCI。
SQL Server 故障转移的概念和任务
| 概念和任务 | Article |
|---|---|
| 介绍故障检测机制和灵活的故障转移策略。 | 故障转移群集实例的故障转移策略 |
| 介绍 FCI 管理和维护概念。 | 故障转移群集实例管理和维护 |
| 介绍多子网配置和概念。 | SQL Server 多子网群集 |
WSFC 上的 SQL Server FCI 支持配置
以下产品支持基于 WSFC 的 SQL Server FCI:
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016 Standard 和 Datacenter 版本
- Windows Server 2019 Standard 和 Datacenter 版本
- Windows Server 2022 Standard 和 Datacenter 版本
Windows Server 提供两种类型的群集服务:
如果节点丢失或 SQL Server 实例存在问题,则只能将服务器群集解决方案与 SQL Server 一起使用以实现高可用性。 在某些情况下,网络负载均衡可以与独立的只读 SQL Server 安装一起使用。
每个 SQL Server FCI 都需要:
- 具有唯一分配磁盘驱动器号的专用群集组。
- 至少有一个唯一 IP 地址。
- 域中的唯一虚拟服务器和实例名称。
非Microsoft群集解决方案支持
SQL Server 是使用Microsoft服务器群集开发和测试的。 如果使用非Microsoft群集产品,则安装、性能或群集行为问题的主要支持联系人应该是解决方案提供商。 Microsoft为非Microsoft群集安装提供商业合理的支持,类似于对独立 SQL Server 部署的支持。
支持的节点数
有关 AlwaysOn 故障转移群集实例支持的最大节点数的详细信息,请参阅:
支持的作系统
有关 SQL Server 故障转移群集支持的作系统的信息,请参阅 安装故障转移群集之前验证作系统。
已装载的驱动器
在包含 SQL Server 安装的群集上不支持使用已装载的驱动器。 有关详细信息,请参阅 SQL Server 对已装载卷的支持。
群集共享卷 (CSV)
SQL Server 2012 (11.x) 和早期版本不支持在故障转移群集中对 SQL Server 使用 CSV。
有关将 CSV 与 SQL Server 2014 (12.x) 或更高版本配合使用的信息,请参阅以下资源:
域控制器限制
配置为域控制器的故障转移群集实例节点上不支持 SQL Server 故障转移群集实例。
域迁移注意事项
SQL Server 2005 (9.x) 和更高版本无法迁移到新域。 需要卸载并重新安装故障转移群集组件。 有关详细信息,请参阅 将 Windows Server 群集从一个域移到另一个域。
卸载 SQL Server 之前,应执行以下步骤:
将 SQL Server 设置为使用混合模式安全性,或向 SQL Server 登录名添加新域帐户。
重命名
DATA包含系统数据库的文件夹,以便在重新安装后将其交换回,以减少停机时间。除非重新生成整个节点,否则不要删除 SQL Server 支持文件、SQL Server Native Client、Integration Services 或工作站组件。
警告
如果在卸载过程中发生错误,可能需要重新生成节点才能再次成功安装 SQL Server。