首页主机资讯SQL Server在Ubuntu上的集群配置方法

SQL Server在Ubuntu上的集群配置方法

时间2025-10-16 14:34:04发布访客分类主机资讯浏览641
导读:SQL Server在Ubuntu上的集群配置方法 在Ubuntu系统上配置SQL Server集群,主要支持两种主流方案:AlwaysOn可用性组(原生Linux支持,高可用性与数据冗余兼顾)和故障转移群集实例(需依赖第三方工具,如Pac...

SQL Server在Ubuntu上的集群配置方法

在Ubuntu系统上配置SQL Server集群,主要支持两种主流方案:AlwaysOn可用性组(原生Linux支持,高可用性与数据冗余兼顾)和故障转移群集实例(需依赖第三方工具,如Pacemaker/Corosync)。以下是详细配置步骤及注意事项:

一、前置准备

  1. 系统与环境要求

    • 所有集群节点需为Ubuntu系统(建议20.04及以上版本),并保持系统更新至最新状态。
    • 确保节点间网络互通(关闭防火墙或开放SQL Server默认端口1433、AlwaysOn相关端口5022等)。
    • 所有节点时间同步(建议使用NTP服务,如sudo timedatectl set-ntp true)。
    • 准备共享存储(仅故障转移群集实例需要,如SAN、NAS;AlwaysOn可用性组无需共享存储,但需备份共享目录用于数据库备份)。
  2. 安装SQL Server
    在所有集群节点上执行以下命令安装SQL Server:

    # 导入Microsoft GPG密钥
    curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
    # 添加SQL Server Ubuntu仓库
    sudo apt-add-repository https://packages.microsoft.com/ubuntu/$(lsb_release -rs)/prod
    # 更新软件包索引
    sudo apt update
    # 安装SQL Server引擎
    sudo apt install -y mssql-server
    # 运行配置向导(设置SA密码等)
    sudo /opt/mssql/bin/mssql-conf setup
    # 启动SQL Server服务并设置开机自启
    sudo systemctl start mssql-server
    sudo systemctl enable mssql-server
    

二、AlwaysOn可用性组配置(推荐)

AlwaysOn可用性组是SQL Server针对Linux优化的原生高可用性解决方案,无需依赖Windows环境,支持跨节点数据复制与自动/手动故障转移。

1. 配置主节点

  • 启用AlwaysOn功能
    编辑SQL Server配置文件,开启AlwaysOn并指定监听端口:

    sudo nano /var/opt/mssql/mssql.conf
    

    添加或修改以下内容:

    hadr.hadrenabled = 1
    network.ipaddress = 0.0.0.0,1433
    

    重启SQL Server服务使配置生效:

    sudo systemctl restart mssql-server
    
  • 创建可用性组
    使用sqlcmd工具连接SQL Server,执行以下SQL脚本:

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Your_SA_Password' -Q "
    CREATE AVAILABILITY GROUP [AG_Name]
    WITH (AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
          FAILURE_CONDITION_LEVEL = 3,
          HEALTH_CHECK_TIMEOUT = 30000)
    FOR REPLICA ON
        N'Primary_Node_Name' WITH (ENDPOINT_URL = N'TCP://Primary_Node_IP:5022',
                                   FAILOVER_MODE = AUTOMATIC,
                                   AVAILABILITY_MODE = SYNCHRONOUS_COMMIT),
        N'Secondary_Node_Name' WITH (ENDPOINT_URL = N'TCP://Secondary_Node_IP:5022',
                                    FAILOVER_MODE = MANUAL,
                                    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
        
    GO"
    

    注:AUTOMATED_BACKUP_PREFERENCE指定备份优先级(PRIMARY表示主节点优先);AVAILABILITY_MODE可选择同步(数据实时同步)或异步(性能优先)提交。

  • 创建数据库镜像证书
    为实现副本间安全通信,需在主节点创建证书并复制到辅助节点:

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Your_SA_Password' -Q "
    CREATE CERTIFICATE AG_Cert
    WITH SUBJECT = 'AlwaysOn Availability Group Certificate';
        
    BACKUP CERTIFICATE AG_Cert
    TO FILE = '/var/opt/mssql/backup/AG_Cert.cer';
        
    GO"
    

    将生成的AG_Cert.cer文件复制到所有辅助节点的/var/opt/mssql/backup/目录。

2. 配置辅助节点

  • 加入可用性组
    在辅助节点上执行以下命令:
    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Your_SA_Password' -Q "
    CREATE ENDPOINT [Hadr_endpoint]
    STATE = STARTED
    AS TCP (LISTENER_PORT = 5022)
    FOR DATABASE_MIRRORING (ROLE = ALL);
        
    GO"
    
    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Your_SA_Password' -Q "
    CREATE CERTIFICATE AG_Cert
    FROM FILE = '/var/opt/mssql/backup/AG_Cert.cer';
        
    GO"
    
    sudo /opt/mssql-tools/bin/sqlcmd -S Primary_Node_IP -U SA -P 'Your_SA_Password' -Q "
    ALTER AVAILABILITY GROUP [AG_Name]
    JOIN WITH (CLUSTER_TYPE = NONE);
        
    GO"
    

3. 验证配置

  • 查看可用性组状态:
    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Your_SA_Password' -Q "
    SELECT name, role_desc, operational_state_desc
    FROM sys.dm_hadr_availability_replica_states;
        
    GO"
    
    正常状态应为:主节点role_descPRIMARY,辅助节点为SECONDARYoperational_state_descONLINE

三、故障转移群集实例配置(可选)

若需将SQL Server实例与Linux高可用性集群(如Pacemaker/Corosync)集成,需通过第三方工具实现自动故障转移。

1. 安装Pacemaker与Corosync

在所有节点上执行:

sudo apt install -y pacemaker corosync pcs
# 设置pcs认证(所有节点密码一致)
sudo passwd hacluster
sudo pcs cluster auth node1 node2 -u hacluster
# 创建集群
sudo pcs cluster setup --name SQL_Cluster node1 node2
# 启动集群
sudo pcs cluster start --all
sudo pcs cluster enable --all

2. 配置集群资源

  • 创建SQL Server资源
    sudo pcs resource create SQL_Server ocf:mssql:fci \
      instance_name=MSSQLSERVER \
      op monitor interval=30s
    
  • 创建虚拟IP资源(用于客户端访问):
    sudo pcs resource create Virtual_IP ocf:heartbeat:IPaddr2 \
      ip=192.168.1.100 cidr_netmask=24 \
      op monitor interval=30s
    
  • 关联资源(确保SQL Server与虚拟IP在同一节点):
    sudo pcs constraint colocation add Virtual_IP with SQL_Server INFINITY
    sudo pcs constraint order promote SQL_Server then start Virtual_IP
    

3. 验证故障转移

  • 手动停止主节点SQL Server服务,观察集群是否将资源切换至辅助节点:
    sudo pcs cluster stop node1
    sudo pcs status
    
    正常情况下,虚拟IP与SQL Server资源应迁移至节点2。

四、注意事项

  • 权限与安全:确保SQL Server服务账户(mssql)对共享存储(故障转移群集实例)或备份目录(AlwaysOn)有读写权限。
  • 监控与维护:定期使用pcs status(Pacemaker集群)或sys.dm_hadr_availability_replica_states(AlwaysOn)检查集群状态,及时处理故障节点。
  • 版本兼容性:AlwaysOn可用性组需SQL Server Enterprise Edition(Linux版),故障转移群集实例需SQL Server Standard/Enterprise Edition。

以上步骤覆盖了SQL Server在Ubuntu上的主要集群配置方案,可根据业务需求选择合适的方案实施。建议参考Microsoft官方文档(如《SQL Server on Linux High Availability》)获取最新细节。

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


若转载请注明出处: SQL Server在Ubuntu上的集群配置方法
本文地址: https://pptw.com/jishu/728011.html
Ubuntu上SQL Server的常见问题及解决方案 SQL Server在Ubuntu上的数据迁移指南

游客 回复需填写必要信息