当前位置: 首页 > news >正文

保姆级教程:Windows Server上SQL Server 2019 Always On高可用完整配置(含防火墙和权限避坑指南)

Windows Server环境下SQL Server 2019 Always On高可用集群实战指南

在企业级数据库部署中,高可用性(High Availability)是确保业务连续性的关键要素。微软SQL Server 2019的Always On可用性组技术,为关键业务数据库提供了自动故障转移的解决方案。本文将深入探讨从零开始搭建Always On集群的全过程,特别聚焦于那些容易被忽略却至关重要的配置细节。

1. 环境准备与前置条件

搭建SQL Server Always On高可用性组并非简单的安装向导点击过程,而是一个需要精心规划的系统工程。在开始配置前,必须确保所有节点满足以下基础条件:

  • Windows Server故障转移集群:这是Always On技术的底层依赖,需要至少两台运行相同版本Windows Server的物理或虚拟机
  • 域环境:所有节点必须加入同一个Active Directory域,且DNS解析正常工作
  • 存储配置:建议为仲裁见证配置独立的共享存储(通常为文件共享或磁盘见证)
  • 网络规划:节点间需要稳定的心跳连接,建议使用专用网络接口

关键检查项表格

组件要求验证方法
操作系统Windows Server 2016/2019 Datacenterwinver命令
SQL Server版本2019 Enterprise/StandardSELECT @@VERSION
域成员身份所有节点在同一域`systeminfo
防火墙开放5022、1433等端口netsh advfirewall firewall show rule name=all

注意:SQL Server服务账户需要具有"创建计算机对象"的域权限,否则集群配置将失败。建议提前在AD中为SQL服务账户委派相应权限。

2. SQL Server Always On功能启用与配置

安装SQL Server 2019时,默认不会启用Always On功能。需要在每个节点上手动启用这一特性:

# 以管理员身份运行PowerShell Import-Module SQLPS -DisableNameChecking Enable-SqlAlwaysOn -ServerInstance "YourInstanceName" -Force

启用后必须重启SQL Server服务使更改生效。此时常见的两个陷阱:

  1. 服务账户权限不足:如果使用本地系统账户运行SQL服务,跨节点通信将失败。建议改用域账户,并确保该账户:

    • 是每个节点上的本地管理员
    • 具有"锁定内存页"权限(通过本地安全策略配置)
    • 在SQL Server中具有sysadmin角色
  2. 端点认证不匹配:Always On使用数据库镜像端点进行通信,必须确保所有节点使用相同的认证方式(通常为证书或Windows认证)

端点配置检查脚本

SELECT e.name AS EndpointName, e.protocol_desc, e.type_desc, e.state_desc, e.is_admin_endpoint, t.port AS TCPPort FROM sys.database_mirroring_endpoints e JOIN sys.tcp_endpoints t ON e.endpoint_id = t.endpoint_id WHERE e.type = 4; -- DATABASE_MIRRORING类型

3. 数据库准备与可用性组创建

创建可用性组前,主节点上的数据库必须满足特定条件。一个常被忽视的关键步骤是数据库备份与还原策略:

  1. 在主节点执行完整备份:
BACKUP DATABASE [YourDB] TO DISK = N'C:\Backup\YourDB.bak' WITH COMPRESSION, STATS = 10;
  1. 在辅助节点还原时,必须使用NORECOVERY选项:
RESTORE DATABASE [YourDB] FROM DISK = N'C:\Backup\YourDB.bak' WITH NORECOVERY, STATS = 10, MOVE 'YourDB_Data' TO 'E:\Data\YourDB.mdf', MOVE 'YourDB_Log' TO 'F:\Log\YourDB.ldf';

常见还原问题排查

  • 错误:"无法获得独占访问权" → 确保没有用户连接到此数据库
  • 错误:"文件路径无效" → 检查MOVE语句中的路径是否存在
  • 错误:"备份集不完整" → 可能需要先还原日志备份

创建可用性组向导时,这些参数需要特别注意:

  • 初始角色:明确指定哪个节点初始为主副本
  • 故障转移模式:自动故障转移需要配置同步提交模式
  • 读取路由:配置辅助副本的只读路由列表,实现读负载均衡
  • 备份首选项:指定在哪个副本上执行自动备份

4. 网络与防火墙精细配置

网络配置不当是导致Always On部署失败的最常见原因。除了众所周知的1433(SQL)和5022(镜像端点)端口外,还需注意:

  • 集群通信端口:3343(UDP)用于集群心跳
  • RPC端点映射器:135(TCP)用于远程过程调用
  • SMB共享:445(TCP)用于文件共享见证
  • Kerberos认证:88(TCP/UDP)用于域认证

推荐的防火墙规则配置脚本

# 创建入站规则 $ports = @(1433, 5022, 3343, 135, 445, 88) foreach ($port in $ports) { netsh advfirewall firewall add rule ` name="SQL HA Port $port" ` dir=in action=allow protocol=TCP localport=$port } # 特别处理UDP端口 netsh advfirewall firewall add rule ` name="Cluster UDP 3343" ` dir=in action=allow protocol=UDP localport=3343

提示:在域环境中,可以考虑创建组策略对象(GPO)来统一部署这些防火墙规则,确保所有节点配置一致。

5. 监听器配置与连接测试

可用性组监听器是客户端连接的关键入口点,其配置直接影响应用的故障转移体验。创建监听器时:

  1. DNS记录:提前在DNS中创建记录,TTL设置较短(如300秒)以便快速故障转移
  2. IP地址:为每个子网分配静态IP,避免DHCP分配
  3. 端口:默认1433,如需更改需确保应用连接字符串相应调整

连接字符串最佳实践

Server=tcp:YourListenerName,1433;Database=YourDB; MultiSubnetFailover=True;ApplicationIntent=ReadOnly;

参数说明:

  • MultiSubnetFailover=True:加速多子网环境下的故障检测
  • ApplicationIntent=ReadOnly:将读操作路由到辅助副本

测试故障转移时,建议按以下步骤验证:

  1. 手动触发主副本故障转移
  2. 监控连接中断时间(应小于30秒)
  3. 验证应用自动重连能力
  4. 检查数据一致性

6. 日常运维与监控策略

部署完成后,建立有效的监控体系至关重要。关键监控指标包括:

  • 同步状态sys.dm_hadr_database_replica_states中的synchronization_state_desc
  • 延迟时间sys.dm_hadr_database_replica_states中的redo_queue_size和log_send_rate
  • 资源使用:CPU、内存、网络和磁盘I/O压力

自动化监控脚本示例

SELECT ag.name AS AGName, ar.replica_server_name, db_name(drs.database_id) AS DatabaseName, drs.synchronization_state_desc AS SyncState, drs.synchronization_health_desc AS SyncHealth, drs.log_send_queue_size AS LogSendQueueKB, drs.redo_queue_size AS RedoQueueKB FROM sys.dm_hadr_database_replica_states drs JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id JOIN sys.availability_groups ag ON ar.group_id = ag.group_id;

对于大型数据库,可能需要调整以下参数优化性能:

  • 并行重做线程数ALTER AVAILABILITY GROUP [AGName] MODIFY REPLICA ON 'NodeName' WITH (SEEDING_MODE = AUTOMATIC)
  • 网络压缩:考虑启用WITH COMPRESSION选项减少网络传输量
  • 日志生成控制:避免大批量事务导致日志膨胀

7. 高级配置与性能调优

对于要求严苛的生产环境,这些高级配置可以进一步提升可用性和性能:

自动页修复: 当检测到损坏页时,SQL Server会自动从健康副本获取该页的完好副本。可通过以下命令验证状态:

SELECT * FROM sys.dm_hadr_auto_page_repair;

读取扩展: 合理配置只读路由列表,将报表等读密集型负载分流到辅助副本:

ALTER AVAILABILITY GROUP [AGName] MODIFY REPLICA ON 'SecondaryNode' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL = 'TCP://SecondaryNode.domain:1433')); ALTER AVAILABILITY GROUP [AGName] MODIFY REPLICA ON 'PrimaryNode' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = ('SecondaryNode')));

加密通信: 为端点通信配置证书加密,提升安全性:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'ComplexPassword123!'; CREATE CERTIFICATE HAG_Cert WITH SUBJECT = 'HAG Endpoint Certificate'; CREATE ENDPOINT [Hadr_endpoint] STATE = STARTED AS TCP (LISTENER_PORT = 5022) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HAG_Cert, ENCRYPTION = REQUIRED ALGORITHM AES, ROLE = ALL );

在实际项目中,我们发现配置Windows集群仲裁见证时使用文件共享见证(FSW)而非传统的磁盘见证,可以显著降低存储依赖。同时,定期执行故障转移演练(每季度至少一次)是确保高可用架构可靠性的最佳实践。

http://www.jsqmd.com/news/1010576/

相关文章:

  • 2026年随州市本地人常去黄金回收门店前五整理:黄金回收铂金回收白银回收彩金回收靠谱门店TOP5实力排行榜推荐及联系方式汇总 - 亦辰小黄鸭
  • Linux Perf Swevent软件事件计数与Hrtimer触发
  • 动态李代数在量子计算中的核心作用与应用解析
  • 2026年漯河市黄金回收白银回收铂金回收彩金回收测评+本地人气靠前五家靠谱门店介绍推荐及联系方式 - 前途无量YY
  • 别只盯着三星西数!海康威视CC300 M.2 SSD在拯救者Y7000上的真实体验与避坑指南
  • 别再傻傻分不清了!C#多线程开发中ManualResetEvent和ManualResetEventSlim到底怎么选?
  • Falcon大语言模型:工业级开源LLM的架构设计与生产部署指南
  • STM32的PB3引脚还能这么用?深入聊聊JTAG/SWD复用与异步跟踪功能那点事
  • 手把手教你:在HarmonyOS开发板RK2206上跑通TinyMaix手写数字识别(附完整代码)
  • 2026年吕梁市黄金回收白银回收铂金回收彩金回收测评+本地人气靠前五家靠谱门店介绍推荐及联系方式 - 前途无量YY
  • BLDC方波驱动 vs PMSM正弦波驱动:你的项目到底该选哪个?(从原理到选型指南)
  • Linux pkcs7_parse_message DER解码与signer_info
  • 2026年石家庄市黄金回收白银回收铂金回收彩金回收测评+本地人气靠前五家靠谱门店介绍推荐及联系方式 - 前途无量YY
  • 5步轻松配置XUnity.AutoTranslator:免费游戏翻译神器入门指南
  • 从glTF到3D Tiles:手把手教你为Cesium项目选择合适的3D模型格式
  • 2026年马鞍山市黄金回收白银回收铂金回收彩金回收测评+本地人气靠前五家靠谱门店介绍推荐及联系方式 - 前途无量YY
  • SillyTavern 5大高效优化技巧:让AI聊天响应速度提升200%
  • 别再纠结了!2024年新项目选pnpm、yarn还是npm?我帮你从实战角度盘一盘
  • Agent Runtime层的标准化时刻:Session+Harness+Sandbox架构解析
  • Downkyi哔哩下载姬:3步解锁B站8K超高清视频的专业下载方案
  • AzurLaneAutoScript架构解析:基于图像识别的自动化任务调度系统
  • 如何为你的智能家居项目选择温度传感器?实测对比TMP117与DHT22、DS18B20
  • Linux platform驱动匹配表与设备树解析流程
  • 乳腺癌生存预测的多模态机器学习框架解析与应用
  • DownKyi:5步掌握B站视频下载的终极免费方案
  • 碧蓝航线Alas自动化脚本:终极7x24小时全自动游戏管理解决方案
  • 从MC1496到三极管:手把手教你用频谱分析仪对比两种混频器的真实性能
  • 2026年茂名市黄金回收白银回收铂金回收彩金回收测评+本地人气靠前五家靠谱门店介绍推荐及联系方式 - 前途无量YY
  • 从命令行到桌面应用:SillyTavern AI聊天界面桌面化终极指南
  • 从nnU-Net到nnDetection:医学影像AI自动化框架的‘双子星’该怎么选?