CentOS上SQL Server集群搭建指南
导读:CentOS 上 SQL Server 高可用集群搭建指南 一 方案总览与前置条件 架构选择 FCI 故障转移群集实例:同一时刻仅有一个实例拥有共享存储并对外提供服务,依赖共享存储(如 iSCSI/NFS/SMB)与 Pacemaker...
CentOS 上 SQL Server 高可用集群搭建指南
一 方案总览与前置条件
- 架构选择
- FCI 故障转移群集实例:同一时刻仅有一个实例拥有共享存储并对外提供服务,依赖共享存储(如 iSCSI/NFS/SMB)与 Pacemaker 管理资源;适合“实例级”高可用。
- Always On 可用性组 AG:多个数据库副本提供高可用与读扩展,Linux 上采用 Pacemaker 作为集群管理器,AG 的 cluster_type=external;适合“数据库级”高可用与读写分离。
- 节点与网络
- 建议至少 3 台 CentOS 节点(FCI 至少 2 台 + 仲裁;AG 推荐 3 副本 便于自动故障转移),主机名可解析(DNS 或 /etc/hosts),节点间 SSH 互通,时间同步(如 chrony)。
- 存储与权限
- FCI 需共享块存储(iSCSI)或共享文件存储(NFS/SMB),数据库文件需迁移到共享存储后再创建群集资源。
- 为 Pacemaker 创建本地凭据文件 /var/opt/mssql/secrets/passwd,权限 600,属主 root:root,供群集代理连接 SQL Server 使用。
二 安装与基础配置
- 安装 SQL Server(各节点)
- 添加 Microsoft 仓库并安装(示例为 RHEL/CentOS 7 的 SQL Server 2019 仓库;其他版本请替换为对应仓库):
- sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
- sudo yum install -y mssql-server
- sudo /opt/mssql/bin/mssql-conf setup(设置 SA 密码与版本)
- sudo systemctl enable --now mssql-server
- 添加 Microsoft 仓库并安装(示例为 RHEL/CentOS 7 的 SQL Server 2019 仓库;其他版本请替换为对应仓库):
- 启用高可用功能
- Always On AG:在每个实例启用 HADR
- /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
- systemctl restart mssql-server
- 验证:SELECT SERVERPROPERTY(‘HadrManagerStatus’)
- FCI:安装 SQL Server HA 资源代理
- sudo yum install -y mssql-server-ha
- Always On AG:在每个实例启用 HADR
- 安装与准备 Pacemaker(各节点)
- 启用高可用仓库并安装组件
- sudo yum-config-manager --set-enabled highavailability
- sudo yum install -y pacemaker pcs fence-agents-all resource-agents corosync
- 创建 Pacemaker 登录凭据
- sudo mkdir -p /var/opt/mssql/secrets
- echo ‘’ | sudo tee /var/opt/mssql/secrets/passwd
- echo ‘’ | sudo tee -a /var/opt/mssql/secrets/passwd
- sudo chown root:root /var/opt/mssql/secrets/passwd
- sudo chmod 600 /var/opt/mssql/secrets/passwd
- 防火墙与基础服务
- sudo firewall-cmd --permanent --add-service=high-availability & & sudo firewall-cmd --reload
- 若防火墙无 HA 服务,放行端口:TCP 2224、3121、21064;UDP 5405
- sudo passwd hacluster(两节点一致)
- sudo systemctl enable --now pcsd pacemaker
- 启用高可用仓库并安装组件
三 部署 FCI 故障转移群集实例
- 共享存储准备
- 使用 iSCSI/NFS/SMB 提供共享存储,完成 LUN/导出/挂载与权限配置,并将数据库文件迁移至共享存储(/var/opt/mssql 或自定义数据目录)。
- 建立 Pacemaker 集群
- 认证与建群(示例两节点 sqlfcivm1/sqlfcivm2):
- pcs cluster auth sqlfcivm1 sqlfcivm2 -u hacluster
- pcs cluster setup --name LinFCIClu sqlfcivm1 sqlfcivm2
- pcs cluster start --all & & pcs cluster enable --all
- 认证与建群(示例两节点 sqlfcivm1/sqlfcivm2):
- 创建资源与启动顺序
- 建议将资源放入同一资源组,按“存储 → 网络 → 应用”顺序启动:
- 磁盘资源(以 iSCSI 为例):
- pcs resource create Filesystem device=“/dev//” directory=“” fstype=“” --group RGName
- 网络资源(VIP,示例 192.168.22.160):
- pcs resource create ocf:heartbeat:IPaddr2 ip=192.168.22.160 cidr_netmask=24 op monitor interval=30s --group RGName
- SQL Server FCI 资源(由 mssql-server-ha 提供):
- pcs resource create ocf:mssql:fci --group RGName
- 磁盘资源(以 iSCSI 为例):
- 常见运维
- 查看状态:pcs status
- 迁移实例:pcs resource move --force
- 清理迁移约束:pcs resource clear
- 建议将资源放入同一资源组,按“存储 → 网络 → 应用”顺序启动:
- 重要提示
- FCI 为“实例级”故障转移,共享存储是单点风险点,建议配合外部存储冗余与定期备份。
四 部署 Always On 可用性组
- 前置配置
- 各节点启用 HADR(见第二节),并开启 AlwaysOn_health 扩展事件以便排障:
- ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);
- 创建数据库主密钥与端点认证(各副本)
- CREATE MASTER KEY ENCRYPTION BY PASSWORD=‘’;
- 创建用于端点认证的证书/登录并授予端点权限(示例略,生产请使用强密码与最小权限)。
- 各节点启用 HADR(见第二节),并开启 AlwaysOn_health 扩展事件以便排障:
- 创建可用性组
- 示例(3 同步副本,端口 5022,cluster_type=external,自动种子设定):
- CREATE AVAILABILITY GROUP [crmag] WITH (DB_FAILOVER=ON, CLUSTER_TYPE=EXTERNAL) FOR REPLICA ON N’node1’ WITH (ENDPOINT_URL=‘TCP://node1:5022’, AVAILABILITY_MODE=SYNCHRONOUS_COMMIT, FAILOVER_MODE=EXTERNAL, SEEDING_MODE=AUTOMATIC), N’node2’ WITH (ENDPOINT_URL=‘TCP://node2:5022’, AVAILABILITY_MODE=SYNCHRONOUS_COMMIT, FAILOVER_MODE=EXTERNAL, SEEDING_MODE=AUTOMATIC), N’node3’ WITH (ENDPOINT_URL=‘TCP://node3:5022’, AVAILABILITY_MODE=SYNCHRONOUS_COMMIT, FAILOVER_MODE=EXTERNAL, SEEDING_MODE=AUTOMATIC);
- ALTER AVAILABILITY GROUP [crmag] GRANT CREATE ANY DATABASE;
- 示例(3 同步副本,端口 5022,cluster_type=external,自动种子设定):
- 将 AG 交由 Pacemaker 管理
- 创建用于群集控制的 SQL 登录(各副本)
- CREATE LOGIN pacemakerLogin WITH PASSWORD=‘’;
- GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::[crmag] TO pacemakerLogin;
- GRANT VIEW SERVER STATE TO pacemakerLogin;
- 将凭据写入 /var/opt/mssql/secrets/passwd(权限 600)
- 在 Pacemaker 中创建 AG 资源 与 侦听器 VIP 资源(示例 VIP 192.168.22.160,域名解析建议通过 DNS 或 /etc/hosts 提供),设置启动顺序与约束,使 VIP 与 AG 资源在同一组并按需共址。
- 创建用于群集控制的 SQL 登录(各副本)
- 验证与切换
- 使用 SSMS/sqlcmd 检查 AG 状态与健康,执行计划内/外故障转移验证 RTO/RPO。
五 运维与排障要点
- 集群与网络
- 建议生产环境使用 DNS 管理节点与侦听器域名,/etc/hosts 仅作临时方案;确保节点间 NTP 同步与 SSH 互信。
- 防火墙放行 Pacemaker 高可用服务或端口:TCP 2224、3121、21064;UDP 5405。
- 仲裁与 STONITH
- 生产建议配置 法定人数 与合适的隔离设备(fence agent);若环境暂不支持(如部分虚拟化平台),可临时设置 stonith-enabled=false,但需充分评估脑裂风险并尽快补齐隔离能力。
- 常见检查
- SQL:SELECT SERVERPROPERTY(‘HadrManagerStatus’); 检查 AG/端点连通与数据移动进度。
- Pacemaker:pcs status --full;查看资源约束、启动顺序、失败计数与迁移历史。
- 升级与变更
- 变更前备份(全量/差异/日志),在维护窗口执行,变更后复核 AG 同步状态与侦听器连通性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS上SQL Server集群搭建指南
本文地址: https://pptw.com/jishu/768369.html
