在Ubuntu上确保SQL Server高可用性可采用以下方案,需注意SQL Server部分功能在Linux上的限制及替代方案:
一、推荐方案:使用 Always On 可用性组(AG)
适用场景:企业级高可用性、读写分离、跨站点容灾
步骤:
- 安装SQL Server:在Ubuntu上安装SQL Server Enterprise版本(需授权)。
- 启用AG功能:通过SQL Server配置管理器启用Always On可用性组功能,并重启服务。
- 创建可用性组:
- 在主节点使用T-SQL或SSMS创建AG,添加数据库并配置副本(支持同步/异步模式)。
- 示例T-SQL:
CREATE AVAILABILITY GROUP [AG_Name]
WITH (AUTOMATED_BACKUP_PREFERENCE = SECONDARY, DB_FAILOVER = ON)
FOR DATABASE [DB_Name]
REPLICA ON 'Node1' WITH (ENDPOINT_URL = 'TCP://Node1:5022', AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, FAILOVER_MODE = AUTOMATIC),
'Node2' WITH (ENDPOINT_URL = 'TCP://Node2:5022', AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, FAILOVER_MODE = AUTOMATIC);
- 配置监听器:创建AG监听器以实现客户端自动重定向。
- 测试故障转移:手动模拟主节点故障,验证副本自动提升为主节点。
注意:
- 需至少3个节点(含主节点),建议使用奇数节点避免脑裂。
- 同步模式需确保节点间网络低延迟,异步模式适用于跨地域场景。
二、替代方案:故障转移集群实例(FCI)
适用场景:零停机时间、共享存储环境(如SAN)
步骤:
- 配置共享存储:通过NFS或iSCSI实现多节点共享存储(需硬件支持)。
- 安装SQL Server:在Ubuntu上安装SQL Server,并选择“故障转移集群实例”安装类型。
- 配置集群资源:使用Pacemaker+Corosync管理集群,将SQL Server服务注册为集群资源。
- 测试故障转移:模拟节点故障,验证服务自动切换至其他节点。
限制:
- 依赖共享存储,成本较高,且仅支持主备切换,无读写分离。
三、其他方案及注意事项
- 数据库镜像(已弃用):
- SQL Server复制:
- 适用于数据分发,但需手动配置发布/订阅,无自动故障转移。
- 第三方工具:
- 使用Pacemaker+Corosync实现集群管理,但需额外配置资源代理。
关键建议:
- 优先选择Always On可用性组,平衡高可用性与功能需求。
- 定期监控副本同步状态、网络延迟及故障转移日志,确保配置有效性。
- 生产环境建议搭配硬件负载均衡器(如HAProxy)优化客户端连接。
参考来源: