在 Debian 上做 SQL Server 集群,需要先明确你说的“集群”是哪一种:
⚠️ 说明:
- Windows 上的 WSFC 在 Linux 上不存在
- Debian 上 SQL Server 集群 必须基于 Pacemaker + Corosync
- SQL Server on Linux 不支持 FCI 共享存储集群(官方限制),只能用 AG
SQLNode1 (Debian) ─┐
├─ Pacemaker Cluster
SQLNode2 (Debian) ─┘
/etc/hosts)sudo apt update
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
sudo apt install -y mssql-server-ha
sudo apt install -y pacemaker corosync pcs
systemctl enable --now pcsd
systemctl enable --now corosync
systemctl enable --now pacemaker
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
/opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
systemctl restart mssql-server
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
);
pcs resource create sqlag ocf:mssql:ag \
ag_name=sqlag \
op monitor interval=30s
✅ Debian 上 不能使用 Windows 故障转移集群
✅ SQL Server Linux 不支持共享存储 FCI
✅ 必须使用 CLUSTER_TYPE = EXTERNAL
✅ 时间同步(NTP)必须一致
✅ 防火墙放行:
可选方案:
你可以告诉我:
我可以给你 一步步可执行命令版 或 生产级架构图。