首页
/ SQL Server First Responder Kit 中的 AG 副本延迟检测功能增强

SQL Server First Responder Kit 中的 AG 副本延迟检测功能增强

2025-06-22 08:03:10作者:江焘钦

在 SQL Server 的高可用性解决方案中,可用性组(AG)是最常用的技术之一。然而,当 AG 副本出现同步延迟时,管理员往往难以及时发现,这可能导致故障转移时数据丢失或性能问题。

问题背景

SQL Server First Responder Kit 是一套广受欢迎的开源诊断工具集,其中的 sp_Blitz 和 sp_BlitzFirst 存储过程用于快速识别 SQL Server 的健康状况。在之前的版本中,对于 AG 副本同步状态的检测不够全面,特别是当副本出现轻微但持续的延迟时,管理员可能无法及时获得警告。

技术实现

最新版本中增加了对 AG 副本延迟的主动检测功能,当发现任何副本的同步延迟超过60秒时,会生成明确的警告信息。这一功能基于以下关键 DMV(动态管理视图)查询实现:

SELECT 
    ag.name AS [AG Name],
    ar.replica_server_name AS [Replica Name],
    drs.database_name,
    drs.redo_queue_size AS [Redo Queue Size (KB)],
    drs.log_send_queue_size AS [Log Send Queue Size (KB)],
    drs.log_send_rate AS [Log Send Rate (KB/sec)],
    drs.redo_rate AS [Redo Rate (KB/sec)],
    ps.last_commit_time AS [Primary Commit Time],
    drs.last_commit_time AS [Replica Commit Time],
    DATEDIFF(SECOND, drs.last_commit_time, ps.last_commit_time) AS [Seconds Behind]
FROM 
    sys.dm_hadr_database_replica_states AS drs
JOIN 
    sys.availability_replicas AS ar 
    ON drs.replica_id = ar.replica_id
JOIN 
    sys.availability_groups AS ag 
    ON ar.group_id = ag.group_id
JOIN 
    sys.dm_hadr_database_replica_states AS ps 
    ON drs.group_id = ps.group_id 
    AND drs.database_id = ps.database_id
    AND ps.is_local = 1  -- 主副本
WHERE 
    drs.is_local = 0  -- 从副本
ORDER BY 
    [Seconds Behind] DESC;

技术细节解析

  1. 数据来源:查询主要利用了三个关键系统视图:

    • sys.dm_hadr_database_replica_states:提供每个数据库副本的详细状态信息
    • sys.availability_replicas:包含可用性组中每个副本的配置信息
    • sys.availability_groups:记录可用性组的基本信息
  2. 关键指标

    • Redo Queue Size:待重做的日志量(KB)
    • Log Send Queue Size:待发送的日志量(KB)
    • Log Send Rate:日志发送速率(KB/秒)
    • Redo Rate:日志重做速率(KB/秒)
    • Seconds Behind:副本落后主副本的秒数
  3. 阈值设置:60秒的阈值是一个经验值,既不会对短暂网络波动过于敏感,又能及时发现潜在问题。

实际应用价值

这一增强功能为DBA提供了以下优势:

  1. 主动预警:在副本延迟达到可接受上限时及时提醒,避免问题扩大
  2. 全面视图:不仅显示延迟时间,还提供相关的队列大小和处理速率
  3. 易于集成:作为SQL Server First Responder Kit的一部分,可以无缝集成到现有的监控体系中
  4. 性能影响小:基于DMV的查询对系统性能影响极小

最佳实践建议

  1. 定期运行sp_Blitz检查,特别是在维护窗口前后
  2. 对于关键业务系统,可以考虑将阈值调整为更严格的值(如30秒)
  3. 当收到警告时,应结合Log Send Rate和Redo Rate分析瓶颈所在
  4. 长期延迟可能表明网络带宽不足或从副本负载过高

这一功能的加入使得SQL Server First Responder Kit在高可用性环境中的诊断能力更加全面,帮助DBA更早发现并解决AG同步问题,确保业务连续性。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
24
9
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
64
19
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
392
3.89 K
flutter_flutterflutter_flutter
暂无简介
Dart
671
156
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
JavaScript
261
322
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
661
311
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.2 K
654
rainbondrainbond
无需学习 Kubernetes 的容器平台,在 Kubernetes 上构建、部署、组装和管理应用,无需 K8s 专业知识,全流程图形化管理
Go
15
1