温馨提示×

SQL Server在CentOS上的集群配置指南

小樊
45
2025-09-24 14:47:14
栏目: 云计算

SQL Server在CentOS上的集群配置指南(以AlwaysOn可用性组为例)

一、基础准备工作

1. 系统与网络要求

  • 操作系统:选择CentOS 7.9及以上版本(需兼容SQL Server版本,如SQL Server 2019/2022);
  • 节点数量:至少3台(1主+2从,满足多数场景的高可用需求);
  • 网络配置:所有节点处于同一局域网,配置静态IP地址,关闭防火墙或开放必要端口(如SQL Server默认端口1433、AlwaysOn端点端口5022);
  • 主机名解析:通过/etc/hosts文件实现节点间名称解析(避免依赖DNS),格式如下:
    192.168.1.10 centos00 # 主节点 192.168.1.11 centos01 # 从节点1 192.168.1.12 centos02 # 从节点2 

2. 依赖包与存储库

  • 安装依赖包:确保系统已安装yum-utilscurlwget等基础工具;
  • 添加Microsoft YUM存储库:下载并配置SQL Server官方YUM存储库(以SQL Server 2019为例):
    sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo 

3. 安装SQL Server

  • 安装SQL Server引擎:使用YUM命令安装SQL Server:
    sudo yum install -y mssql-server 
  • 初始化配置:运行配置脚本设置管理员密码(如YourStrongPassw0rd)和版本(选择“Evaluation”或“Developer”版本用于测试):
    sudo /opt/mssql/bin/mssql-conf setup 
  • 启动服务:启动SQL Server并设置开机自启:
    sudo systemctl start mssql-server sudo systemctl enable mssql-server 

二、配置AlwaysOn可用性组(AAG)

1. 启用AlwaysOn特性

  • 开启HADR功能:修改SQL Server配置,启用AlwaysOn可用性组:
    sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1 sudo systemctl restart mssql-server 
  • 验证状态:通过SQL命令检查HADR管理器状态(需返回1表示运行正常):
    SELECT serverproperty('HadrManagerStatus'); 

2. 配置端点与证书

  • 开启扩展事件:用于监控AlwaysOn状态(可选但推荐):
    ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON); 
  • 创建数据库主密钥:加密证书和端点凭证:
    USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MasterKey123!'; 
  • 创建证书:生成用于端点认证的证书(以master数据库为例):
    CREATE CERTIFICATE Node00_Cert WITH SUBJECT = 'Node00 SQL Server Certificate', EXPIRY_DATE = '2026-12-31'; BACKUP CERTIFICATE Node00_Cert TO FILE = '/var/opt/mssql/certs/Node00_Cert.cer'; 
  • 创建端点:配置AlwaysOn端点(所有节点需执行,替换证书路径):
    CREATE ENDPOINT Hadr_endpoint STATE = STARTED AS TCP (LISTENER_PORT = 5022) FOR DATA_MIRRORING ( ROLE = ALL, AUTHENTICATION = CERTIFICATE Node00_Cert, ENCRYPTION = REQUIRED ALGORITHM AES ); GRANT CONNECT ON ENDPOINT::Hadr_endpoint TO [sqlserviceaccount]; -- 替换为SQL Server服务账户 

3. 配置集群管理器(Pacemaker)

  • 安装Pacemaker与Corosync
    sudo yum install -y pacemaker corosync pcs 
  • 配置集群通信:设置节点间无密码SSH登录(简化集群通信):
    ssh-keygen -t rsa # 在主节点生成密钥 ssh-copy-id centos01 # 复制到从节点 ssh-copy-id centos02 
  • 启动集群服务
    sudo systemctl start pcsd sudo systemctl enable pcsd sudo pcs cluster auth centos00 centos01 centos02 -u hacluster -p YourClusterPassw0rd sudo pcs cluster setup --name SQLCluster centos00 centos01 centos02 sudo pcs cluster start --all sudo pcs cluster enable --all 

4. 创建可用性组

  • 创建AG:在主节点(centos00)上执行,指定同步副本(SYNCHRONOUS_COMMIT)和自动故障转移(EXTERNAL):
    CREATE AVAILABILITY GROUP [SQLAG] WITH (CLUSTER_TYPE = EXTERNAL, DB_FAILOVER = ON) FOR REPLICA ON N'centos00' WITH ( ENDPOINT_URL = N'TCP://centos00:5022', AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC ), N'centos01' WITH ( ENDPOINT_URL = N'TCP://centos01:5022', AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC ); 
  • 授权创建数据库:允许AG自动创建成员数据库:
    ALTER AVAILABILITY GROUP [SQLAG] GRANT CREATE ANY DATABASE; 

5. 将AG添加到Pacemaker

  • 创建Pacemaker资源:定义AG资源并关联集群:
    sudo pcs resource create SQLAG ocf:mssql:ag ag_name=SQLAG meta failure-timeout=30s sudo pcs resource create SQLListener ocf:mssql:listener listener_name=SQLListener port=1433 ag_name=SQLAG sudo pcs constraint colocation add SQLListener with SQLAG INFINITY sudo pcs constraint order promote SQLAG then start SQLListener 

6. 验证配置

  • 手动故障转移测试:模拟主节点故障,验证从节点是否自动提升为主节点:
    sudo pcs cluster standby centos00 # 将主节点设为备用 sudo pcs status # 检查主节点是否切换至从节点 
  • 客户端连接测试:使用SQL Server Management Studio(SSMS)连接AG监听器(SQLListener,端口1433),验证读写操作是否正常。

三、注意事项

  • 版本兼容性:确保SQL Server版本与CentOS版本匹配(如SQL Server 2022需CentOS 8及以上);
  • 数据安全性:定期备份AG中的数据库,建议开启备份压缩(BACKUP COMPRESSION DEFAULT);
  • 监控与维护:使用Pacemaker的crm_mon命令监控集群状态,设置日志轮转避免磁盘空间耗尽;
  • 性能优化:根据节点硬件配置调整SQL Server内存限制(memory.memorylimitmb)和并行度(max degree of parallelism)。

通过以上步骤,可在CentOS上搭建SQL Server AlwaysOn可用性组集群,实现数据库的高可用性与故障自动转移。如需更复杂的配置(如跨数据中心部署),建议参考Microsoft官方文档或咨询专业数据库管理员。

0