SQL Server在Ubuntu上的集群配置方法
SQL Server在Ubuntu上的集群配置方法
在Ubuntu系统上配置SQL Server集群,主要支持两种主流方案:AlwaysOn可用性组(原生Linux支持,高可用性与数据冗余兼顾)和故障转移群集实例(需依赖第三方工具,如Pacemaker/Corosync)。以下是详细配置步骤及注意事项:
一、前置准备
-
系统与环境要求
- 所有集群节点需为Ubuntu系统(建议20.04及以上版本),并保持系统更新至最新状态。
- 确保节点间网络互通(关闭防火墙或开放SQL Server默认端口1433、AlwaysOn相关端口5022等)。
- 所有节点时间同步(建议使用NTP服务,如
sudo timedatectl set-ntp true
)。 - 准备共享存储(仅故障转移群集实例需要,如SAN、NAS;AlwaysOn可用性组无需共享存储,但需备份共享目录用于数据库备份)。
-
安装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_desc
为PRIMARY
,辅助节点为SECONDARY
,operational_state_desc
为ONLINE
。
三、故障转移群集实例配置(可选)
若需将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服务,观察集群是否将资源切换至辅助节点:
正常情况下,虚拟IP与SQL Server资源应迁移至节点2。sudo pcs cluster stop node1 sudo pcs status
四、注意事项
- 权限与安全:确保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