Ubuntu环境下SQL Server集群搭建主流方案
AlwaysOn可用性组是SQL Server针对Linux平台设计的高级高可用性解决方案,支持跨多个Ubuntu节点的数据库复制与自动/手动故障转移,适用于需要高可用性和数据冗余的企业级应用(如金融、电商核心系统)。
核心配置步骤:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list)"
sudo apt-get update
sudo apt-get install -y mssql-server
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
登录SQL Server(使用SA账户,密码需符合复杂度要求),启用TCP/IP协议(默认端口1433):sqlcmd -S localhost -U SA -P 'YourStrongPassword'
# 执行以下SQL命令启用TCP/IP
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'tcpip', 1;
RECONFIGURE;
MyAG
为例),并添加需要高可用的数据库(如YourDatabase
):CREATE AVAILABILITY GROUP [MyAG]
FOR DATABASE [YourDatabase]
REPLICA ON
N'Node1' WITH (
ENDPOINT_URL = N'TCP://Node1:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, -- 同步提交保证数据一致性
FAILOVER_MODE = AUTOMATIC, -- 自动故障转移(生产环境推荐)
SEEDING_MODE = AUTOMATIC -- 自动种子初始化(无需手动备份恢复)
),
N'Node2' WITH (
ENDPOINT_URL = N'TCP://Node2:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = AUTOMATIC
);
MyAGListener
),客户端通过监听器IP连接可用性组(无需感知主节点变化):CREATE AVAILABILITY GROUP LISTENER [MyAGListener]
WITH IP ((N'192.168.1.100', N'255.255.255.0')), -- 监听器IP(需与节点在同一网段)
PORT = 1433,
NAME = N'MyAGListener';
HEALTHY
状态):SELECT * FROM sys.dm_hadr_availability_group_states;
SELECT * FROM sys.dm_hadr_replica_states;
sudo systemctl stop mssql-server
故障转移完成后,原主节点恢复后会自动成为辅助副本。故障转移群集实例是将SQL Server实例与Windows Server故障转移群集(WSFC)集成的解决方案,适用于需要与现有Windows基础设施整合的场景(如混合云环境)。但需注意,Ubuntu本身不支持WSFC,需通过虚拟机或双系统运行Windows节点,增加了环境复杂度。
核心配置步骤:
使用Docker在Ubuntu上部署SQL Server容器,结合Kubernetes或Docker Compose实现集群管理,适用于需要快速部署、弹性扩展的场景(如微服务、测试环境)。
核心配置步骤:
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable --now docker
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=YourStrongPassword' \
-p 1433:1433 --name sql1 -v /var/opt/mssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-latest
docker-compose.yml
文件定义多个SQL Server服务,实现容器的批量启动/停止;