温馨提示×

CentOS SQL Server集群搭建指南

小樊
34
2025-11-01 22:40:33
栏目: 云计算

CentOS SQL Server集群搭建指南(以Always On Availability Groups为例)

一、准备工作

1. 系统与环境要求

  • 操作系统:选择CentOS 7.9及以上兼容版本(确保内核版本满足SQL Server要求);
  • 节点配置:至少3台CentOS服务器(1主节点+2辅助节点),建议使用相同硬件配置以减少兼容性问题;
  • 网络要求:节点间网络互通(通过ping命令验证),关闭SELinux(setenforce 0)或配置为宽松模式,防火墙开放SQL Server默认端口(1433)及Always On相关端口(5022);
  • 依赖工具:安装yum-utilscurlwget等基础工具(yum install -y yum-utils curl wget)。

2. 软件准备

  • SQL Server RPM包:从Microsoft官方下载CentOS兼容的SQL Server版本(如2019、2022)的RPM包(如mssql-server-16.0.950.9-1.x86_64.rpm);
  • Ansible(可选):若需自动化部署,需安装Ansible 2.9及以上版本及ansible-collection-microsoft-sql角色(yum install -y ansible ansible-collection-microsoft-sql)。

二、SQL Server基础安装与配置

1. 添加Microsoft官方仓库

使用curl命令下载并添加SQL Server的YUM仓库文件:

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo

(注:若使用CentOS 8,可将rhel/7替换为rhel/8

2. 安装SQL Server

通过YUM包管理器安装SQL Server:

sudo yum install -y mssql-server

3. 初始化配置

运行配置脚本设置管理员密码(SA账户)及版本(选择“Evaluation”免费版或付费版):

sudo /opt/mssql/bin/mssql-conf setup

按照提示输入密码(需符合复杂度要求,如包含大小写字母、数字和符号),等待安装完成。

4. 启动SQL Server服务

启动服务并设置开机自启:

sudo systemctl start mssql-server
sudo systemctl enable mssql-server

验证服务状态:

sudo systemctl status mssql-server

(正常状态应为“active (running)”)

三、启用Always On Availability Groups(AG)

1. 开启HADR功能

Always On特性需通过mssql-conf工具启用:

/opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server

验证HADR状态:

SELECT serverproperty('HadrManagerStatus'); -- 返回1表示启用成功

2. 配置集群资源管理器(Pacemaker)

Pacemaker是Linux下管理高可用的核心工具,需先配置集群框架:

  • 认证节点:在所有节点上执行(以hacluster用户身份):
    pcs cluster auth centos00 centos01 centos02 -u hacluster -p <密码>
    
  • 创建集群:指定集群名称(如crmcluster)及节点:
    pcs cluster setup --name crmcluster centos00 centos01 centos02
    
  • 启动集群:启动所有节点的Pacemaker服务并设置开机自启:
    pcs cluster start --all
    pcs cluster enable --all
    
  • 设置集群属性:调整集群参数(如stonith-enabled=false,仅测试环境使用):
    pcs property set stonith-enabled=false
    

3. 配置节点间通信

  • SSH无密码登录:在主节点生成RSA密钥,分发至所有辅助节点:
    ssh-keygen -t rsa
    ssh-copy-id hacluster@centos01
    ssh-copy-id hacluster@centos02
    
  • 主机名解析:编辑/etc/hosts文件,添加节点IP与主机名映射(所有节点一致):
    192.168.1.10 centos00
    192.168.1.11 centos01
    192.168.1.12 centos02
    

4. 创建可用性组

  • 启用AG特性:在主节点执行:
    USE master;
    GO
    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    EXEC sp_configure 'Always On Availability Groups', 1;
    RECONFIGURE;
    GO
    
  • 创建AG:在主节点上创建AG(以TestAG为例),指定主副本(centos00)及辅助副本(centos01centos02):
    CREATE AVAILABILITY GROUP [TestAG]
    FOR DATABASE [YourDatabaseName]
    REPLICA ON
        'centos00' WITH (
            ENDPOINT_URL = 'TCP://centos00:5022',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            FAILOVER_MODE = AUTOMATIC
        ),
        'centos01' WITH (
            ENDPOINT_URL = 'TCP://centos01:5022',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            FAILOVER_MODE = AUTOMATIC
        ),
        'centos02' WITH (
            ENDPOINT_URL = 'TCP://centos02:5022',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            FAILOVER_MODE = MANUAL
        );
    GO
    
  • 加入辅助副本:在辅助节点上还原数据库(需先备份主库数据库),并加入AG:
    ALTER AVAILABILITY GROUP [TestAG] JOIN;
    GO
    

5. 验证集群状态

  • 查看AG状态:在主节点执行:
    SELECT ag.name, ar.replica_server_name, ars.role_desc, ars.synchronization_health_desc
    FROM sys.availability_groups ag
    JOIN sys.availability_replicas ar ON ag.group_id = ar.group_id
    JOIN sys.dm_hadr_availability_replica_states ars ON ar.replica_id = ars.replica_id;
    
    (正常状态:主副本role_descPRIMARY,辅助副本为SECONDARYsynchronization_health_descHEALTHY

四、注意事项

1. 兼容性检查

  • 确认SQL Server版本与CentOS版本匹配(如SQL Server 2019支持CentOS 7/8,SQL Server 2022支持CentOS 8/Stream);
  • 确保所有节点的glibc版本一致(避免因库版本差异导致服务异常)。

2. 安全配置

  • 防火墙:开放必要端口(1433、5022),使用firewall-cmd命令:
    firewall-cmd --add-port=1433/tcp --permanent
    firewall-cmd --add-port=5022/tcp --permanent
    firewall-cmd --reload
    
  • 权限管理:限制hacluster用户的访问范围,避免未授权操作;
  • 加密:启用SSL/TLS加密数据库连接(通过mssql-conf工具配置)。

3. 监控与维护

  • 日志分析:定期检查/var/opt/mssql/log目录下的SQL Server日志及Pacemaker日志(/var/log/pacemaker/pacemaker.log),定位潜在问题;
  • 备份策略:即使使用AG,仍需定期备份数据库(如每周全量备份+每日增量备份);
  • 更新升级:及时应用SQL Server及CentOS的安全补丁,升级前备份所有数据。

五、常见问题排查

  • 节点无法加入集群:检查SSH无密码登录是否配置正确,/etc/hosts文件是否一致,防火墙是否阻止通信;
  • AG同步失败:验证辅助副本的数据库还原状态(需为STANDBY/READ_ONLY),检查网络延迟(使用pingtraceroute命令);
  • Pacemaker服务异常:查看pcs status命令输出,确认集群节点状态(online/offline),重启异常节点的Pacemaker服务(systemctl restart pacemaker)。

0