温馨提示×

debian sqlserver如何做集群

小樊
45
2026-10-16 07:29:34
栏目: 云计算

在 Debian 上做 SQL Server 集群,需要先明确你说的“集群”是哪一种:

  1. Always On 可用性组(AG) —— 推荐,SQL Server 官方高可用方案
  2. 故障转移集群(FCI) —— 依赖共享存储 + Pacemaker
  3. 只读扩展 / 负载均衡(非真正集群)
  4. 第三方方案(如 Corosync + Pacemaker)

⚠️ 说明:

  • Windows 上的 WSFC 在 Linux 上不存在
  • Debian 上 SQL Server 集群 必须基于 Pacemaker + Corosync
  • SQL Server on Linux 不支持 FCI 共享存储集群(官方限制),只能用 AG

一、最常见方案:Always On 可用性组(推荐 ✅)

适用场景

  • 高可用
  • 灾备
  • 读扩展(只读副本)

架构

SQLNode1 (Debian)  ─┐
                    ├─ Pacemaker Cluster
SQLNode2 (Debian)  ─┘

二、环境准备(所有节点)

1. 系统要求

  • Debian 11 / 12
  • SQL Server 2019 / 2022
  • 至少 2 台服务器
  • 静态 IP + 主机名解析(/etc/hosts)

2. 安装 SQL Server

sudo apt update
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

3. 安装高可用组件

sudo apt install -y mssql-server-ha

三、配置 Pacemaker + Corosync

1. 安装集群软件(所有节点)

sudo apt install -y pacemaker corosync pcs

2. 启动并设置开机自启

systemctl enable --now pcsd
systemctl enable --now corosync
systemctl enable --now pacemaker

3. 设置 hacluster 密码

passwd hacluster

四、创建集群

在 任一节点 执行:

pcs cluster auth node1 node2 -u hacluster -p 你的密码
pcs cluster setup --name sqlcluster node1 node2
pcs cluster start --all
pcs cluster enable --all

五、配置 SQL Server Always On

1. 启用 Always On(所有节点)

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

2. 创建数据库主密钥和证书

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongPass!';
CREATE CERTIFICATE db_cert WITH SUBJECT = 'AG Cert';
BACKUP CERTIFICATE db_cert
TO FILE = '/var/opt/mssql/data/db_cert.cer';

将证书互相复制并创建登录用户


六、创建可用性组

CREATE AVAILABILITY GROUP [sqlag]
WITH (CLUSTER_TYPE = EXTERNAL)
FOR DATABASE [testdb]
REPLICA ON
  'node1' WITH (
    ENDPOINT_URL = 'tcp://node1:5022',
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    FAILOVER_MODE = EXTERNAL
  ),
  'node2' WITH (
    ENDPOINT_URL = 'tcp://node2:5022',
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    FAILOVER_MODE = EXTERNAL
  );

七、Pacemaker 管理 AG 资源

pcs resource create sqlag ocf:mssql:ag \
  ag_name=sqlag \
  op monitor interval=30s

八、常见注意点(非常重要)

✅ Debian 上 不能使用 Windows 故障转移集群
✅ SQL Server Linux 不支持共享存储 FCI
✅ 必须使用 CLUSTER_TYPE = EXTERNAL
✅ 时间同步(NTP)必须一致
✅ 防火墙放行:

  • 1433(SQL)
  • 5022(AG)
  • 2224 / 5405(集群)

九、如果你只是想“简单高可用”

可选方案:

  • 主从复制(Transaction Replication)
  • 日志传送(Log Shipping)
  • Docker + Keepalived(伪集群)

十、我可以继续帮你

你可以告诉我:

  1. SQL Server 版本(2019 / 2022)
  2. Debian 版本
  3. 集群目的(高可用 / 读扩展 / 灾备)
  4. 是否允许数据延迟

我可以给你 一步步可执行命令版 或 生产级架构图。

0 踩