Skip to content

SQLServer Failover Cluster Instance 安装

FCI 概述

SQLServer Failover Cluster Instance (FCI) 是一种高可用性解决方案,将SQLServer实例安装在Windows Server故障转移集群上。FCI提供了实例级别的故障转移,当一个节点出现故障时,SQLServer实例会自动转移到另一个健康节点,确保业务连续性。

安装前准备

1. 硬件要求

组件最低要求推荐配置
节点数量2个节点2-4个节点
CPU4核处理器8核或更多
内存16 GB32 GB 或更多
存储共享存储(iSCSI、FC或SMB 3.0)企业级SAN或NAS
网络1 Gbps 网卡10 Gbps 网卡

2. 软件要求

  • Windows Server 2016 或更高版本(Datacenter或Standard)
  • .NET Framework 4.7.2 或更高版本
  • Windows故障转移集群功能
  • 共享存储(iSCSI、FC或SMB 3.0)

3. 网络准备

  • 为每个节点配置至少两个网络适配器:
    • 公共网络:用于客户端连接
    • 私有网络:用于节点间通信
  • 配置静态IP地址
  • 确保所有节点加入同一个域

4. 存储准备

  • 配置共享存储:
    • 至少准备3个LUN:数据文件、日志文件和TempDB
    • 格式化LUN为NTFS或ReFS文件系统
    • 为每个LUN分配驱动器号
    • 确保所有节点可以访问共享存储

5. 域准备

  • 创建域账户用于SQLServer服务:
    • SQLServer服务账户
    • SQL Server代理服务账户
    • 这些账户需要具有适当的权限

安装步骤

1. 配置Windows故障转移集群

在所有节点上安装故障转移集群功能

powershell
# 在所有节点上运行
Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools

验证集群配置

powershell
# 在其中一个节点上运行
Test-Cluster -Node Node1, Node2 -Include "Storage", "Network", "System Configuration"

创建故障转移集群

powershell
# 在其中一个节点上运行
New-Cluster -Name ClusterName -Node Node1, Node2 -StaticAddress 192.168.1.100

2. 安装SQLServer FCI

启动SQLServer安装向导

  1. 在第一个节点上运行SQLServer安装介质
  2. 选择 安装 选项卡
  3. 选择 全新SQL Server独立安装或向现有安装添加功能

产品密钥和许可条款

  • 输入产品密钥
  • 接受许可条款

功能选择

  • 选择 数据库引擎服务
  • 根据需要选择其他功能

实例配置

  • 选择实例类型:默认实例或命名实例
  • 输入实例ID

服务器配置

  • 服务账户
    • 为SQLServer服务和SQL Server代理服务指定域账户
    • 设置启动类型为自动
  • 排序规则:建议使用默认排序规则 Chinese_PRC_CI_AS

数据库引擎配置

  • 身份验证模式
    • 选择混合模式
    • 设置sa密码
    • 添加域管理员组作为SQLServer管理员

集群资源组配置

  • 输入SQLServer网络名称(用于客户端连接)
  • 输入SQLServer实例的IP地址

数据目录配置

  • 将数据文件、日志文件和TempDB配置到共享存储上
  • 确保所有节点可以访问这些路径

完成第一个节点安装

  • 检查安装配置摘要
  • 点击 安装 开始安装
  • 等待安装完成

在其他节点上添加节点

  1. 在第二个节点上运行SQLServer安装介质
  2. 选择 安装 选项卡
  3. 选择 向SQL Server故障转移集群添加节点
  4. 按照向导完成安装
  5. 对所有剩余节点重复此过程

3. 验证FCI安装

检查集群资源

powershell
# 查看集群资源状态
Get-ClusterResource -Cluster ClusterName

# 查看SQLServer资源组
Get-ClusterGroup -Cluster ClusterName | Where-Object {$_.Name -like "*SQL*"}

测试故障转移

  1. 打开故障转移集群管理器
  2. 选择SQLServer资源组
  3. 右键点击,选择 移动 > 选择节点
  4. 选择目标节点,点击 确定
  5. 观察资源组转移过程
  6. 验证SQLServer实例在新节点上正常运行

连接到SQLServer FCI

使用SQL Server Management Studio (SSMS) 连接到SQLServer FCI:

  • 服务器名称:SQLServer网络名称\实例名(如果是命名实例)
  • 身份验证:Windows身份验证或SQL Server身份验证

安装后配置

1. 配置SQLServer选项

sql
-- 设置最大内存
EXEC sp_configure 'max server memory (MB)', 24576;
RECONFIGURE;

-- 配置TempDB
-- 建议为每个CPU核心创建一个TempDB文件,最多8个
ALTER DATABASE tempdb ADD FILE (NAME = N'tempdev2', FILENAME = N'F:\tempdb\tempdev2.ndf', SIZE = 256MB, FILEGROWTH = 128MB);
-- 重复添加更多文件,根据CPU核心数

2. 配置数据库邮件

用于发送告警和通知:

sql
-- 启用数据库邮件功能
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE;

-- 配置数据库邮件(具体步骤略)

3. 配置SQL Server代理

确保SQL Server代理服务在所有节点上都设置为自动启动:

powershell
# 在所有节点上运行
Set-Service -Name SQLSERVERAGENT -StartupType Automatic
Start-Service -Name SQLSERVERAGENT

4. 配置监控

  • 配置SQLServer性能监控
  • 配置集群健康监控
  • 配置告警机制

最佳实践

1. 存储配置

  • 分离数据和日志文件:将数据文件和日志文件存储在不同的LUN上
  • 使用适当的RAID级别
    • 数据文件:RAID 5或RAID 10
    • 日志文件:RAID 10
    • TempDB:RAID 10
  • 配置适当的文件大小:避免频繁的自动增长

2. 网络配置

  • 为公共网络和私有网络使用不同的网络适配器
  • 为私有网络使用专用交换机
  • 配置网络优先级:私有网络优先级高于公共网络

3. 安全配置

  • 使用域账户管理SQLServer服务
  • 定期更改服务账户密码
  • 限制SQLServer网络访问
  • 启用TLS加密

4. 高可用性考虑

  • 定期测试故障转移
  • 确保所有节点的硬件配置一致
  • 保持所有节点的Windows和SQLServer补丁级别一致
  • 配置自动故障转移

5. 备份策略

  • 实施完整的备份策略
  • 将备份文件存储在非共享存储上
  • 定期测试备份恢复

常见问题与解决方案

1. 安装过程中提示无法访问共享存储

解决方案

  • 检查共享存储连接
  • 验证所有节点可以访问共享存储
  • 检查LUN权限设置
  • 确保存储驱动程序已正确安装

2. 故障转移测试失败

排查步骤

  1. 检查集群事件日志
  2. 检查SQLServer错误日志
  3. 验证所有集群资源状态
  4. 检查网络连接
  5. 检查存储访问权限

3. 无法连接到SQLServer FCI

排查步骤

  1. 检查SQLServer服务状态
  2. 检查集群资源状态
  3. 检查防火墙设置
  4. 验证SQLServer网络名称解析
  5. 检查客户端连接字符串

4. 节点添加失败

解决方案

  • 确保所有节点的Windows和SQLServer版本一致
  • 确保所有节点已安装相同的SQLServer功能
  • 检查域账户权限
  • 检查网络连接

卸载SQLServer FCI

1. 从所有节点移除SQLServer

  1. 在最后添加的节点上运行SQLServer安装介质
  2. 选择 维护 选项卡
  3. 选择 从SQL Server故障转移集群移除节点
  4. 按照向导完成卸载
  5. 对所有剩余节点重复此过程,除了第一个节点

2. 卸载第一个节点

  1. 在第一个节点上运行SQLServer安装介质
  2. 选择 维护 选项卡
  3. 选择 卸载SQL Server功能
  4. 按照向导完成卸载

3. 销毁故障转移集群

powershell
# 销毁集群
Remove-Cluster -Cluster ClusterName -Force

# 在所有节点上卸载故障转移集群功能
Uninstall-WindowsFeature -Name Failover-Clustering -IncludeManagementTools

总结

SQLServer Failover Cluster Instance (FCI) 是一种可靠的高可用性解决方案,提供了实例级别的故障转移保护。正确的安装和配置是确保FCI正常运行的关键。DBA需要根据业务需求和系统资源,合理规划集群架构,遵循最佳实践,确保FCI的高可用性和性能。定期测试故障转移和维护集群健康状态是确保FCI长期稳定运行的重要措施。