首页主机资讯CentOS上SQL Server集群搭建指南

CentOS上SQL Server集群搭建指南

时间2025-12-10 15:51:03发布访客分类主机资讯浏览753
导读: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 7SQL 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
  • 启用高可用功能
    • 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
  • 安装与准备 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
  • 创建资源与启动顺序
    • 建议将资源放入同一资源组,按“存储 → 网络 → 应用”顺序启动:
      • 磁盘资源(以 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
    • 常见运维
      • 查看状态: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=‘’;
      • 创建用于端点认证的证书/登录并授予端点权限(示例略,生产请使用强密码与最小权限)。
  • 创建可用性组
    • 示例(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;
  • 将 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 资源在同一组并按需共址。
  • 验证与切换
    • 使用 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
CentOS SQL Server版本选择建议 如何迁移SQL Server到CentOS平台

游客 回复需填写必要信息