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

SQL Server AlwaysOn (SQL 查询数据详解及监控用途)

修正后的完整查询

SELECT 
    ar.replica_server_name AS [副本名称],
    ar.availability_mode_desc AS [同步模式],
    DB_NAME(dbr.database_id) AS [数据库名称],
    dbr.database_state_desc AS [数据库状态],
    dbr.synchronization_state_desc AS [同步状态],
    dbr.synchronization_health_desc AS [同步健康状态],
    ISNULL(
        CASE dbr.redo_rate
            WHEN 0 THEN -1
            ELSE CAST(dbr.redo_queue_size AS FLOAT) / dbr.redo_rate
        END, 
        -1
    ) AS [Redo延迟()],
    ISNULL(
        CASE dbr.log_send_rate
            WHEN 0 THEN -1
            ELSE CAST(dbr.log_send_queue_size AS FLOAT) / dbr.log_send_rate
        END, 
        -1
    ) AS [Log传送延迟()],
    dbr.redo_queue_size AS [Redo等待队列(KB)],
    dbr.redo_rate AS [Redo速率(KB/S)],
    dbr.log_send_queue_size AS [Log传送等待队列(KB)],
    dbr.log_send_rate AS [Log传送速率(KB/S)]  -- 修正反斜杠为斜杠
FROM 
    master.sys.availability_replicas AS ar
INNER JOIN 
    master.sys.dm_hadr_database_replica_states AS dbr  -- 补全表名
    ON ar.replica_id = dbr.replica_id  -- 添加关联条件
    AND ar.group_id = dbr.group_id;    -- 按可用性组关联

SQL 查询数据详解及监控用途

以下 SQL 查询用于获取 SQL Server AlwaysOn 可用性组中数据库副本的详细状态和性能指标。这些数据非常适合用于实时监控和高可用性环境的健康检查。


可查询的关键数据及监控用途

字段名数据来源监控用途
副本名称sys.availability_replicas标识每个副本的服务器名称,用于区分主副本和辅助副本。
同步模式sys.availability_replicas显示副本的同步模式:
SYNCHRONOUS_COMMIT(同步提交)
ASYNCHRONOUS_COMMIT(异步提交)。
数据库名称sys.dm_hadr_database_replica_states标识可用性组中的具体数据库,用于定位问题数据库。
数据库状态sys.dm_hadr_database_replica_states监控数据库是否在线(ONLINE)或处于恢复中(RESTORING)。
同步状态sys.dm_hadr_database_replica_states判断数据同步是否正常:
SYNCHRONIZED(已同步)
⚠️ SYNCHRONIZING(同步中)
NOT SYNCHRONIZING(未同步)。
同步健康状态sys.dm_hadr_database_replica_states健康状态分级:
HEALTHY(健康)
⚠️ PARTIALLY_HEALTHY(部分健康)
NOT_HEALTHY(异常)。
Redo延迟(秒)计算字段(redo_queue_size / redo_rate辅助副本应用日志的预计耗时。
阈值建议:>30 秒需检查辅助副本性能。
Log传送延迟(秒)计算字段(log_send_queue_size / log_send_rate主副本发送日志到辅助副本的耗时。
阈值建议:>10 秒需优化网络带宽。
Redo等待队列(KB)sys.dm_hadr_database_replica_states辅助副本待应用的日志量。
阈值建议:>100,000 KB 需排查磁盘 I/O。
Redo速率(KB/S)sys.dm_hadr_database_replica_states辅助副本每秒应用的日志量。
阈值建议:<500 KB/S 表示性能不足。
Log传送等待队列(KB)sys.dm_hadr_database_replica_states主副本待发送的日志量。
阈值建议:>50,000 KB 需检查主副本负载或网络。
Log传送速率(KB/S)sys.dm_hadr_database_replica_states主副本每秒发送的日志量。
阈值建议:<1,000 KB/S 需优化网络或启用压缩。

监控场景示例

1. 实时同步状态仪表盘

将查询结果集成到 GrafanaPower BI 中,生成以下可视化图表:
同步健康状态:用红/黄/绿颜色标记各副本状态。
延迟趋势图:展示 Redo延迟Log传送延迟 的历史变化。
队列积压热力图:按数据库和副本显示 Redo等待队列Log传送队列

2. 自动化告警

通过 ZabbixPrometheus 设置警报规则:

# Prometheus 警报规则示例
- alert: HighRedoLatency
  expr: redo_latency_seconds > 30
  annotations:
    summary: "高 Redo 延迟 ({{ $value }}秒)"
    description: "副本 {{ $labels.replica }} 的数据库 {{ $labels.database }} Redo 延迟过高!"

- alert: LogSendQueueOverflow
  expr: log_send_queue_kb > 50000
  annotations:
    summary: "Log 传送队列积压"
    description: "主副本的 Log 传送队列积压 {{ $value }} KB,需立即处理!"
3. 日常巡检报告

使用 PowerShellPython 定时运行查询并生成 CSV/Excel 报告:

# PowerShell 脚本示例
$query = @"
SELECT [副本名称], [同步模式], [数据库名称], [同步健康状态], [Redo延迟(秒)]
FROM (...完整查询...)
"@
Invoke-SqlCmd -Query $query -ServerInstance "YourServer" | Export-Csv -Path "AlwaysOn_Report_$(Get-Date -Format 'yyyyMMdd').csv"

权限要求

最低权限VIEW SERVER STATE(允许查询动态管理视图)。
推荐权限CONTROL AVAILABILITY GROUP(可结合故障转移操作)。


总结

通过这些 SQL 查询,您可以监控以下核心内容:

  1. 同步健康性:快速发现 NOT_HEALTHY 状态并介入处理。
  2. 延迟与性能:定位网络瓶颈(高 Log传送延迟)或副本性能问题(低 Redo速率)。
  3. 队列积压:预警数据同步滞后风险,防止故障转移时数据丢失。

建议将查询集成到自动化监控系统中,并定期优化阈值规则,以保障 AlwaysOn 环境的稳定性和高可用性。

相关文章:

  • 《Vue Router实战教程》4.路由的匹配语法
  • 为啥物联网用MQTT?
  • 电子元器件 + 模拟电路硬件零基础入门
  • 3.1.3.2 Spring Boot使用Servlet组件
  • Java 基础(4)—Java 对象布局及偏向锁、轻量锁、重量锁介绍
  • 从算法到应用:DeepSeek 如何重塑 AI 交互新范式?
  • Transformers 是工具箱,BERT 是工具。
  • 响应“十四五”新型储能规划!储能电站如何用高精度电表满足“双向计量”要求?
  • 服务器安装Jupyter Notebook
  • 软考系统架构设计师之物联网与边缘计算笔记
  • 深入解析多表联查(MySQL)
  • ubuntu 20.04 安装源码编译 ros humble过程
  • 基于混合编码器和边缘引导的拉普拉斯金字塔网络用于遥感变化检测
  • c# 数据结构 链表篇 有关单链表的一切
  • java 项目
  • AI多模态论文解读:OmniCaptioner:多领域视觉描述生成框架(附脑图)
  • C语言超详细指针知识(一)
  • 第八天 开始Unity Shader的学习之Blinn-Phong光照模型
  • 聊聊Spring AI的Tool Calling
  • 利用多GPU计算探索量子无序及AI拓展
  • 做网站需要哪些成本/百度竞价点击软件
  • 做印刷网站公司/广州宣布5条优化措施
  • 哪些网站是用twcms做的/百度seo优化按年收费
  • 如果做公司网站/网络运营和网络营销的区别
  • 在网站建设中要注意的问题/搜狗站长平台验证不了
  • 如何做网站ab测试/智能营销系统开发