linux

如何在Linux上实现SQL Server的高可用性

小樊
38
2025-12-29 15:51:50
栏目: 云计算

Linux 上实现 SQL Server 高可用性的路径总览

Linux 上,SQL Server 通过 Pacemaker/Corosync 群集管理实现 Always On 可用性组(AG) 的高可用,或在 SQL Server 2017(14.x) 中使用 None 变体实现仅用于读扩展的 AG(不提供自动故障转移)。Linux 上不存在 WSFC,因此与 Windows 的实现机制不同;同时,SQL Server 2017 的数据库镜像在 Linux 上不可用。对于高可用,建议至少 3 个同步提交副本 以在单节点故障时仍可自动恢复。若采用 FCI(故障转移群集实例),同样依赖 Pacemaker 在 Linux 上提供群集能力。


方案选型与前置条件


高可用部署步骤(可用性组 + Pacemaker)

  1. 准备与网络
    • 在所有节点安装并启用 SQL Server;设置主机名与 /etc/hosts;开放必要端口(见下节)。
  2. 证书认证与镜像端点
    • 在主副本创建 主密钥证书,备份为 .cer/.pvk 并复制到各副本节点(权限设为 mssql:mssql)。
    • 在各副本基于备份创建证书;创建数据库镜像端点(示例端口 5022,认证方式 CERTIFICATE,SQL Server 2017 仅支持证书)。
  3. 创建可用性组
    • 使用 T-SQL 创建 AG(指定副本、同步/异步模式、故障转移模式等);也可使用 SSMS 向导(注意在加入副本时授予 ALTER/CONTROL/VIEW DEFINITIONS 给 pacemaker 所需的权限)。
  4. 部署 Pacemaker 群集
    • 安装并启动 pcsd/pacemaker/corosync;生产环境必须配置 STONITH/fencing(示例常省略,仅用于测试)。
    • 将 AG 作为资源加入群集,按发行版指引完成资源配置与约束(RHEL、SLES、Ubuntu 步骤略有差异)。
  5. 创建侦听器与连接
    • Linux 上 AG 侦听器 通过 DNS 记录 实现(而非群集内建对象);为侦听器配置 虚拟 IP(VIP) 与端口(常用 1433),确保应用通过 DNS 名称连接以实现透明故障转移。

防火墙与端口清单


运维与最佳实践

0
看了该问题的人还看了