外观
SQLServer Failover Cluster Instance 安装
FCI 概述
SQLServer Failover Cluster Instance (FCI) 是一种高可用性解决方案,将SQLServer实例安装在Windows Server故障转移集群上。FCI提供了实例级别的故障转移,当一个节点出现故障时,SQLServer实例会自动转移到另一个健康节点,确保业务连续性。
安装前准备
1. 硬件要求
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 节点数量 | 2个节点 | 2-4个节点 |
| CPU | 4核处理器 | 8核或更多 |
| 内存 | 16 GB | 32 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.1002. 安装SQLServer FCI
启动SQLServer安装向导
- 在第一个节点上运行SQLServer安装介质
- 选择 安装 选项卡
- 选择 全新SQL Server独立安装或向现有安装添加功能
产品密钥和许可条款
- 输入产品密钥
- 接受许可条款
功能选择
- 选择 数据库引擎服务
- 根据需要选择其他功能
实例配置
- 选择实例类型:默认实例或命名实例
- 输入实例ID
服务器配置
- 服务账户:
- 为SQLServer服务和SQL Server代理服务指定域账户
- 设置启动类型为自动
- 排序规则:建议使用默认排序规则
Chinese_PRC_CI_AS
数据库引擎配置
- 身份验证模式:
- 选择混合模式
- 设置sa密码
- 添加域管理员组作为SQLServer管理员
集群资源组配置
- 输入SQLServer网络名称(用于客户端连接)
- 输入SQLServer实例的IP地址
数据目录配置
- 将数据文件、日志文件和TempDB配置到共享存储上
- 确保所有节点可以访问这些路径
完成第一个节点安装
- 检查安装配置摘要
- 点击 安装 开始安装
- 等待安装完成
在其他节点上添加节点
- 在第二个节点上运行SQLServer安装介质
- 选择 安装 选项卡
- 选择 向SQL Server故障转移集群添加节点
- 按照向导完成安装
- 对所有剩余节点重复此过程
3. 验证FCI安装
检查集群资源
powershell
# 查看集群资源状态
Get-ClusterResource -Cluster ClusterName
# 查看SQLServer资源组
Get-ClusterGroup -Cluster ClusterName | Where-Object {$_.Name -like "*SQL*"}测试故障转移
- 打开故障转移集群管理器
- 选择SQLServer资源组
- 右键点击,选择 移动 > 选择节点
- 选择目标节点,点击 确定
- 观察资源组转移过程
- 验证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 SQLSERVERAGENT4. 配置监控
- 配置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. 故障转移测试失败
排查步骤:
- 检查集群事件日志
- 检查SQLServer错误日志
- 验证所有集群资源状态
- 检查网络连接
- 检查存储访问权限
3. 无法连接到SQLServer FCI
排查步骤:
- 检查SQLServer服务状态
- 检查集群资源状态
- 检查防火墙设置
- 验证SQLServer网络名称解析
- 检查客户端连接字符串
4. 节点添加失败
解决方案:
- 确保所有节点的Windows和SQLServer版本一致
- 确保所有节点已安装相同的SQLServer功能
- 检查域账户权限
- 检查网络连接
卸载SQLServer FCI
1. 从所有节点移除SQLServer
- 在最后添加的节点上运行SQLServer安装介质
- 选择 维护 选项卡
- 选择 从SQL Server故障转移集群移除节点
- 按照向导完成卸载
- 对所有剩余节点重复此过程,除了第一个节点
2. 卸载第一个节点
- 在第一个节点上运行SQLServer安装介质
- 选择 维护 选项卡
- 选择 卸载SQL Server功能
- 按照向导完成卸载
3. 销毁故障转移集群
powershell
# 销毁集群
Remove-Cluster -Cluster ClusterName -Force
# 在所有节点上卸载故障转移集群功能
Uninstall-WindowsFeature -Name Failover-Clustering -IncludeManagementTools总结
SQLServer Failover Cluster Instance (FCI) 是一种可靠的高可用性解决方案,提供了实例级别的故障转移保护。正确的安装和配置是确保FCI正常运行的关键。DBA需要根据业务需求和系统资源,合理规划集群架构,遵循最佳实践,确保FCI的高可用性和性能。定期测试故障转移和维护集群健康状态是确保FCI长期稳定运行的重要措施。
