始终可用故障转移群集实例 (SQL Server)

适用于SQL Server

SQL Server 始终可用故障转移群集实例使用 Windows Server 故障转移群集 (WSFC) 来提供本地高可用性。 故障转移群集实例 (FCI) 在服务器实例级别实施冗余。 FCI 是跨 Windows Server 群集节点(并且可能跨多个子网)安装的单个 SQL Server 实例。 在网络中,FCI 显示为在单台计算机上运行的 SQL Server 实例,不过它提供了从一个 WSFC 节点到另一个 WSFC 节点的故障转移(如果当前节点不可用)。

FCI 可利用 Always On 可用性组提供数据库级别的远程灾难恢复。 有关详细信息,请参阅故障转移群集和可用性组 (SQL Server)

注意

Windows Server 2016 Datacenter 版引入了对存储空间直通 (S2D) 的支持。 SQL Server 故障转移群集实例支持将 S2D 用于群集存储资源。 有关详细信息,请参阅 Windows Server 中的存储空间直通

故障转移群集实例还支持群集共享卷 (CSV)。 有关详细信息,请参阅了解故障转移群集中的群集共享卷

故障转移群集实例的优点

当服务器上出现硬件或软件故障时,连接到该服务器的应用程序或客户端将会停机。 在作为 FCI 而不是独立实例使用时,冗余节点可保护 SQL Server 实例的可用性。 在 FCI 中,一次只能有一个节点拥有 WSFC 资源组。 在出现故障(硬件故障、操作系统故障、应用程序或服务故障)或进行计划的升级时,群集会将该资源组的所有权转移至另一个 WSFC 节点。 此过程对连接到 SQL Server 的客户端或应用程序是透明的。 这样可以尽可能减少应用程序或客户端在故障期间将遇到的停机时间。 以下列出了 SQL Server 故障转移群集实例提供的一些主要优点:

  • 在实例级别通过冗余提供保护。

  • 在出现故障(硬件故障、操作系统故障、应用程序或服务故障)时自动进行故障转移。

    重要

    在可用性组中,不支持从 FCI 到可用性组中其他节点的自动故障转移。 这意味着,如果自动故障转移是高可用性解决方案的一个重要组成部分,则 FCI 和独立节点不应在某一可用性组中结合在一起使用。 不过,对于灾难恢复解决方案而言,可以进行此类结合使用。

  • 支持多种存储解决方案,包括 WSFC 群集磁盘(iSCSI、光纤信道等)和服务器消息块 (SMB) 文件共享。

  • 使用多子网 FCI 或在可用性组中运行 FCI 托管数据库进行灾难恢复。 利用 Microsoft 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 服务。 在出现故障转移(无论是自动故障转移还是计划的故障转移)时,将发生以下事件序列:

  1. 除非出现硬件或系统故障,否则会将缓冲区缓存中的所有脏页写入磁盘。

  2. 资源组中所有相应的 SQL Server 服务都将在活动节点上停止。

  3. 资源组所有权将转移到 FCI 中的另一个节点。

  4. 新资源组所有者将启动其 SQL Server 服务。

  5. 客户端应用程序连接请求将自动定向到使用相同虚拟网络名称 (VNN) 的新活动节点。

只要 FCI 的基础 WSFC 群集处于良好的仲裁运行状况(大多数仲裁 WSFC 节点可用作自动故障转移目标),FCI 就将处于联机状态。 当 WSFC 群集丢失其仲裁时(无论此情况是因硬件、软件、网络故障还是不适当的仲裁配置导致的),整个 WSCF 群集以及 FCI 将脱机。 在此计划外故障转移方案中,需要手动干预以在剩余可用节点中重新建立仲裁,以使 WSFC 群集和 FCI 重新联机。 有关详细信息,请参阅:WSFC 仲裁模式和投票配置 (SQL Server)

可预测的故障转移时间

根据 SQL Server 实例上次执行检查点操作的时间,缓冲区缓存中可能存在大量脏页。 因此,故障转移持续的时间取决于将剩余脏页写入磁盘的时间,这会导致不可预测的较长的故障转移时间。 从 Microsoft SQL Server 2012 (11.x) 开始,FCI 可以使用间接检查点来限制保存在缓冲区缓存中的脏页数。 虽然这样做会导致在常规工作负荷下占用额外资源,但将提高故障转移时间的可预测性和可配置性。 这在组织中的服务级协议指定高可用性解决方案的还原时间目标 (RPO) 时很有用。 有关间接检查点的详细信息,请参阅 Indirect Checkpoints

可靠的运行状况监视和灵活的故障转移策略

成功启动 FCI 后,WSFC 服务将监视基础 WSFC 群集的运行状况和 SQL Server 实例的运行状况。 从 Microsoft SQL Server 2012 (11.x) 开始,WSFC 服务使用专用连接来轮询活动 SQL Server 实例,以便通过系统存储过程获取详细的组件诊断信息。 这蕴含了三方面的含义:

  • 利用与 SQL Server 实例的专用连接,始终能够对组件诊断信息进行可靠轮询,即使在 FCI 负荷较重时也是如此。 这样一来,便能够区分负荷较重的系统与实际具有故障条件的系统,从而阻止出现诸如错误故障转移这样的问题。

  • 利用详细组件诊断信息,可以配置更灵活的故障转移策略,由此您便能选择哪些故障条件将触发故障转移以及哪些故障条件将不触发故障转移。

  • 利用详细组件诊断信息,还可以通过追溯方式更好地对自动故障转移进行故障排除。 诊断信息将存储到与 SQL Server 错误日志并置的日志文件中。 可以将这些日志文件加载到日志文件查看器中以检查导致出现故障转移的组件状态,从而确定导致该故障转移的原因。

有关详细信息,请参阅故障转移群集实例的故障转移策略

故障转移群集实例的元素

FCI 由一组物理服务器(节点)构成,这些服务器包含类似的硬件配置以及相同的软件配置,其中包括操作系统版本和修补程序级别,以及 SQL Server 版本、修补程序级别、组件和实例名称。 相同的软件配置是确保 FCI 在节点间进行故障转移时能够正常运行所必需的。

WSFC 资源组
SQL Server FCI 在 WSFC 资源组中运行。 该资源组中的每个节点均维护配置设置和检查点注册表项的同步副本,以确保 FCI 在故障转移后可完全正常运行,并且群集中一次只有一个节点(活动节点)拥有该资源组。 WSFC 服务可管理服务器群集、仲裁配置、故障转移策略和故障转移操作以及 FCI 的 VNN 和虚拟 IP 地址。 在出现故障(硬件故障、操作系统故障、应用程序或服务故障)或进行计划升级时,该资源组的所有权就会转移至另一个 FCI 节点。 WSFC 资源组中支持的节点数取决于 SQL Server 版本。 另外,同一个 WSFC 群集可运行多个 FCI(多个资源组),具体取决于您的硬件能力(如 CPU、内存和磁盘数)。

SQL Server 二进制文件
产品二进制文件本地安装在 FCI 的每个节点上,此过程类似于 SQL Server 独立安装。 但是,在启动过程中,服务将不会自动启动,而是由 WSFC 管理。

存储
与可用性组相反,对于数据库和日志存储,FCI 必须在 FCI 的所有节点之间使用共享存储。 共享存储的形式可以为 WSFC 群集磁盘、SAN 上的磁盘、存储空间直通 (S2D) 或 SMB 上的文件共享。 这样一来,当发生故障转移时,FCI 中的所有节点都会具有相同的实例数据视图。 但这意味着,共享存储有可能成为单个故障点,并且 FCI 依赖于基本存储解决方案来确保数据保护。

网络名称
FCI 的 VNN 为 FCI 提供了一个统一连接点。 这将允许应用程序连接到 VNN,而无需知道当前活动节点。 当发生故障转移时,VNN 会在新的活动节点启动后注册到该节点。 此过程对于连接到 SQL Server 的客户端或应用程序是透明的,可以最大限度地缩短出现故障时应用程序或客户端的停机时间。

虚拟 IP
对于多子网 FCI,将为 FCI 中的每个子网分配一个虚拟 IP 地址。 在故障转移期间,将更新 DNS 服务器上的 VNN 以指向各自子网的虚拟 IP 地址。 在发生多子网故障转移后,应用程序和客户端可使用同一 VNN 连接到 FCI。

SQL Server 故障转移的概念和任务

概念和任务 文章
介绍故障检测机制和灵活的故障转移策略。 故障转移群集实例的故障转移策略
介绍 FCI 管理和维护概念。 故障转移群集实例管理和维护
介绍多子网配置和概念 SQL Server 多子网群集 (SQL Server)

相关主题

主题说明 文章
介绍如何安装新的 SQL Server FCI。 创建新的 SQL Server 故障转移群集(安装程序)
介绍如何升级到 SQL Server 故障转移群集。 升级 SQL Server 故障转移群集实例
介绍 Windows 故障转移群集的概念并提供指向 Windows 故障转移群集相关任务的链接。 Windows Server 故障转移群集与 SQL Server
介绍 FCI 中的节点和可用性组中的副本的概念区别以及有关使用 FCI 承载可用性组的副本的注意事项。 故障转移群集和可用性组 (SQL Server)
介绍已启用 Azure Arc 的 SQL Server。 已启用 Azure Arc 的 SQL Server
介绍如何与 Azure 中的故障转移群集资源进行交互。 在 Azure Arc 中查看 Always On 故障转移群集实例