首页主机资讯centos上sqlserver集群部署

centos上sqlserver集群部署

时间2026-01-19 19:05:04发布访客分类主机资讯浏览720
导读:CentOS 上 SQL Server 高可用集群部署指南 一 架构与前提 高可用形态:在 Linux 上通过 Pacemaker + Corosync 管理 Always On 可用性组(AG);SQL Server 提供 mssql-...

CentOS 上 SQL Server 高可用集群部署指南

一 架构与前提

  • 高可用形态:在 Linux 上通过 Pacemaker + Corosync 管理 Always On 可用性组(AG);SQL Server 提供 mssql-server-ha 包与集群集成。Linux 方案与 Windows 的 WSFC 理念相近,但实现不同,名称解析依赖 DNS(WSFC 的“网络名称资源”在 Linux 中由 DNS 承担)。
  • 节点规划:建议至少 3 个节点(生产环境),示例:
    • 节点与业务 IP:192.168.22.122/124/128
    • 侦听器 VIP:192.168.22.160(AG 对外访问入口)
    • 主机名与域名:如 wwwmssql122.mssqlag.com 等,建议通过 DNS 统一解析(测试可用 /etc/hosts 映射)。
  • 软件与版本:SQL Server 2017/2019/2022 均支持 Linux;CentOS 7 系列上自动化脚本通常最高部署到 SQL Server 2019
  • 存储与文件系统:数据目录建议置于本地 XFS/EXT4;如必须使用 NFS,仅可将 /var/opt/mssql 挂载为 NFS v4.2+,并带 nolock 选项。

二 安装与初始化 SQL Server

  • 添加仓库并安装(示例为 SQL Server 2019,CentOS 7):
    • 仓库: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
  • 初始化配置(设置 SA 密码与版本):sudo /opt/mssql/bin/mssql-conf setup
  • 启动与开机自启:sudo systemctl start mssql-server & & sudo systemctl enable mssql-server
  • 自动化可选:使用 Ansiblemicrosoft.sql.server 角色批量部署(支持 SQL Server 2017–2022;在 CentOS 7.9 上通常自动安装 2019)。

三 部署 Pacemaker 集群

  • 安装高可用组件与 SQL HA 集成包:
    • sudo yum clean all & & sudo yum makecache
    • sudo yum config-manager --set-enabled highavailability
    • sudo yum install -y pacemaker pcs fence-agents-all resource-agents corosync mssql-server-ha
  • 启用并启动 pcsd:
    • sudo systemctl start pcsd & & sudo systemctl enable pcsd
    • echo “HA_PASSWORD” | passwd --stdin hacluster(为 hacluster 设置统一密码)
  • 认证与建集群(任一节点执行):
    • pcs cluster auth node1 node2 node3 -u hacluster
    • pcs cluster setup --name LINUXHACLUSTER node1 node2 node3
    • pcs cluster start --all & & pcs cluster enable --all
  • 基础集群属性(测试环境常用):
    • pcs property set stonith-enabled=false(禁用 STONITH;生产需配置合规的隔离设备)
    • pcs property set start-failure-is-fatal=false
  • 防火墙放行(或临时关闭):
    • firewall-cmd --add-service=high-availability --permanent & & firewall-cmd --reload
    • 或放行端口:2224/tcp、3121/tcp、5405/udp

四 配置 Always On 可用性组与侦听器

  • 启用数据库引擎的 HADR:
    • /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
    • systemctl restart mssql-server
    • 验证:SELECT SERVERPROPERTY(‘HadrManagerStatus’)(返回 1 表示已启动)
  • 创建数据库与完整备份(每个待加入 AG 的数据库至少一次完整备份)。
  • 创建端点与证书认证(跨节点通信):
    • 主节点:
      • CREATE MASTER KEY ENCRYPTION BY PASSWORD=‘’;
      • CREATE CERTIFICATE dbm_cert WITH SUBJECT=‘dbm’;
      • BACKUP CERTIFICATE dbm_cert TO FILE=‘/var/opt/mssql/data/dbm_cert.cer’
        WITH PRIVATE KEY (FILE=‘/var/opt/mssql/data/dbm_cert.pvk’, ENCRYPTION BY PASSWORD=‘’);
    • .cer/.pvk 复制到各副本相同目录,并修正属主:chown mssql:mssql /var/opt/mssql/data/dbm_cert.*
    • 各副本还原证书:
      • CREATE MASTER KEY ENCRYPTION BY PASSWORD=‘’;
      • CREATE CERTIFICATE dbm_cert FROM FILE=‘/var/opt/mssql/data/dbm_cert.cer’
        WITH PRIVATE KEY (FILE=‘/var/opt/mssql/data/dbm_cert.pvk’, DECRYPTION BY PASSWORD=‘’);
    • 在各副本创建数据库镜像端点(示例,端口 5022):
      • CREATE ENDPOINT [Hadr_endpoint]
        AS TCP (LISTENER_PORT = 5022)
        FOR DATABASE_MIRRORING (ROLE = ALL, AUTHENTICATION = CERTIFICATE dbm_cert, ENCRYPTION = REQUIRED ALGORITHM AES);
      • ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
      • GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [public];
  • 创建可用性组(示例名称 LINUX_SQLAG):
    • 主副本执行:
      • CREATE AVAILABILITY GROUP [LINUX_SQLAG]
        WITH (CLUSTER_TYPE = EXTERNAL,
        AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
        FAILURE_CONDITION_LEVEL = 3,
        HEALTH_CHECK_TIMEOUT = 30000)
        FOR DATABASE [YourDB]
        REPLICA ON
        N’node1’ WITH (ENDPOINT_URL = N’TCP://node1.mssqlag.com:5022’,
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC),
        N’node2’ WITH (ENDPOINT_URL = N’TCP://node2.mssqlag.com:5022’,
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC),
        N’node3’ WITH (ENDPOINT_URL = N’TCP://node3.mssqlag.com:5022’,
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC);
      • ALTER AVAILABILITY GROUP [LINUX_SQLAG] GRANT CREATE ANY DATABASE;
  • 将辅助副本加入 AG:
    • ALTER AVAILABILITY GROUP [LINUX_SQLAG] JOIN;
    • ALTER AVAILABILITY GROUP [LINUX_SQLAG] GRANT ALTER ANY DATABASE;
  • 创建侦听器(DNS 记录指向 192.168.22.160):
    • 在 Linux 侧创建 ocf:sql:ag 资源(示例):
      • pcs resource create ag_cluster ocf:sql:ag ag_name=LINUX_SQLAG meta failure-timeout=30s op monitor interval=10s timeout=30s --group=ag_group
      • pcs resource create ag_ip ocf:heartbeat:IPaddr2 ip=192.168.22.160 cidr_netmask=24 op monitor interval=10s timeout=20s --group=ag_group
      • pcs constraint colocation add ag_ip with ag_cluster INFINITY
      • pcs constraint order ag_cluster then ag_ip
    • 应用后,客户端通过侦听器 yahaha_listener.mssqlag.com:1433 访问。

五 运维与常见限制

  • 运维要点
    • 监控与排障:在各副本启用扩展事件会话 AlwaysOn_health(STARTUP_STATE=ON),便于定位 AG 故障。
    • 故障转移:pcs cluster standby (手动迁出);pcs cluster unstandby (恢复)。
    • 备份策略:定期执行数据库与日志备份;在 AG 主副本上优先执行日志备份以避免链路拥塞。
  • 重要限制(Linux 上的 SQL Server)
    • 分布式事务 DTC 不支持(Linux 上的 SQL Server 2017 不支持;2019 起对 AG 场景的支持仍受限,需谨慎评估)。
    • SQL Server Agent 功能受限(部分子系统不可用)。
    • FILESTREAM/FileTable 不支持。
    • 链接服务器对外部数据源及 AD 身份验证支持受限。
    • 名称解析依赖 DNS(WSFC 的“网络名称”等价物)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos上sqlserver集群部署
本文地址: https://pptw.com/jishu/786095.html
Node.js在CentOS中的安全性如何 CentOS HDFS权限管理策略

游客 回复需填写必要信息