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_rateWHEN 0 THEN -1ELSE CAST(dbr.redo_queue_size AS FLOAT) / dbr.redo_rateEND, -1) AS [Redo延遲()],ISNULL(CASE dbr.log_send_rateWHEN 0 THEN -1ELSE CAST(dbr.log_send_queue_size AS FLOAT) / dbr.log_send_rateEND, -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: HighRedoLatencyexpr: redo_latency_seconds > 30annotations:summary: "高 Redo 延遲 ({{ $value }}秒)"description: "副本 {{ $labels.replica }} 的數據庫 {{ $labels.database }} Redo 延遲過高!"- alert: LogSendQueueOverflowexpr: log_send_queue_kb > 50000annotations: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 環境的穩定性和高可用性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76526.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76526.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76526.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣熱題100刷題day63|49.字母異位詞分組

目錄 一、哈希表相關理論 二、思路 核心思路 三、相關題目 四、總結 一、哈希表相關理論 代碼隨想錄刷題day15|&#xff08;哈希表篇&#xff09;242.有效的字母異位詞、383.贖金信-CSDN博客 二、思路 首先&#xff0c;創建一個map集合&#xff0c;遍歷字符串數組&…

愛普生可編程晶振SG8201CJ和SG8200CJ在胃鏡機器人發揮重要作用

在醫療機器人技術高速發展的今天&#xff0c;胃鏡機器人作為胃腸道疾病診斷與治療的創新設備&#xff0c;正逐漸改變傳統診療模式。其復雜精密的系統需要精準的時間同步與穩定的信號輸出&#xff0c;胃鏡機器人是一種先進的醫療設備&#xff0c;用于無創性地檢查胃部疾病。與傳…

Ubuntu22環境下,Docker部署阿里FunASR的gpu版本

番外: 隨著deepseek的爆火,人工智能相關的開發變得異常火爆,相關的大模型開發很常見的agent智能體需要ASR語音識別的功能,阿里開源的FunASR幾乎是把一個商業的項目放給我們使用了。那么我們項目中的生產環境怎么部署gpu版本的語音識別服務呢?經過跟deepseek的一上午的極限…

圖解Java設計模式

1、設計模式面試題 2、設計模式的重要性 3、7大設計原則介紹 3.1、單一職責原則

transformers的 pipeline是什么:將模型加載、數據預處理、推理等步驟進行了封裝

transformers的 pipeline是什么:將模型加載、數據預處理、推理等步驟進行了封裝 pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=50 )pipeline :這是 transformers 庫中一個非常實用的工具函數。它可以基于預訓練模型快速構…

jmeter插件安裝

1、下載 下載地址&#xff1a; Documentation :: JMeter-Plugins.org 然后復制到D:\apache-jmeter-5.6.3\lib\ext 復制后 2、重啟jmeter 在菜單【選項】找到“Plugins Manager” 在 Plugins Manager 界面上&#xff0c;點擊“Available Plugins”標簽頁&#xff0c;可以瀏覽所…

VSCode CMake調試CPP程序

文章目錄 1 安裝C與CMake插件2 配置CMakeLists.txt3 使用CMake編譯調試3.1 編譯3.2 調試 4 自定義構建調試參考 1 安裝C與CMake插件 C插件 CMake插件 2 配置CMakeLists.txt 編寫測試程序 #include<iostream>int main(int argc, char const *argv[]) {int a 1, b 2;i…

【前端】【css】flex布局詳解

Flex 布局&#xff08;Flexible Box Layout&#xff0c;彈性盒子布局&#xff09;是 CSS3 中的一種布局模式&#xff0c;用于在容器中更高效地分配空間并對齊內容&#xff0c;即使它們的大小是動態未知的。它非常適用于響應式設計。 一、Flex 布局的基本概念 1. 啟用 Flex 布局…

LEARNING DYNAMICS OF LLM FINETUNING【論文閱讀筆記】

LEARNING DYNAMICS OF LLM FINETUNING 一句話總結 作者將LLM的學習動力機制拆解成AKG三項&#xff0c;并分別觀察了SFT和DPO訓練過程中??正梯度信號??和??負梯度信號??的變化及其帶來的影響&#xff0c;并得到以下結論&#xff1a; ??SFT通過梯度相似性間接提升無關…

Mac 下載 PicGo 的踩坑指南

Mac 下載 PicGo 的踩坑指南 一、安裝問題 下載地址&#xff1a;https://github.com/Molunerfinn/PicGo/releases 下載之后直接安裝即可&#xff0c;此時打開會報錯&#xff1a;Picgo.app 文件已損壞&#xff0c;您應該將它移到廢紙簍。 這是因為 macOS 為了保護用戶不受惡意…

Element UI 設置 el-table-column 寬度 width 為百分比無效

問題描述&#xff1a; 想要每列寬度不同&#xff0c;不想使用 px 固定值&#xff0c;將 width 設置成百分比&#xff0c;但是每一列還是很窄 原因&#xff1a; el-table 組件會被 vue 解析成 html&#xff0c;vue 直接把百分號去掉把數值當做列寬來呈現&#xff0c;所以&#x…

第五篇:Python面向對象編程(OOP)深度教程

1. 類與對象 1.1 基本概念 ??類??是創建對象的藍圖,定義了對象的??屬性??(數據)和??方法??(行為)。??對象??是類的實例化實體,每個對象擁有獨立的屬性值和共享的類方法 ??示例??:定義Dog類 class Dog:species = "Canis familiaris" …

【數據結構】2.順序表實現通訊錄

文章目錄 一、通訊錄的要求二、通訊錄的具體實現0、 準備工作1、通訊錄的初始化2、通訊錄的銷毀3、通訊錄的展示4、通訊錄添加數據5、通訊錄刪除數據6、通訊錄的查找7、通訊錄的修改8、保存通訊錄數據到文件9、讀取文件內容到通訊錄 三、 通訊錄的完整實現 一、通訊錄的要求 通…

程序化廣告行業(79/89):技術革新與行業發展脈絡梳理

程序化廣告行業&#xff08;79/89&#xff09;&#xff1a;技術革新與行業發展脈絡梳理 大家好&#xff01;一直以來&#xff0c;我都熱衷于在技術領域不斷探索&#xff0c;也深知知識共享對于進步的重要性。寫這篇博客&#xff0c;就是希望能和大家一起深入研究程序化廣告行業…

【C++游戲引擎開發】第9篇:數學計算庫GLM(線性代數)、CGAL(幾何計算)的安裝與使用指南

寫在前面 兩天都沒手搓實現可用的凸包生成算法相關的代碼&#xff0c;自覺無法手搓相關數學庫&#xff0c;遂改為使用成熟數學庫。 一、GLM庫安裝與介紹 1.1 vcpkg安裝GLM 跨平臺C包管理利器vcpkg完全指南 在PowerShell中執行命令&#xff1a; vcpkg install glm# 集成到系…

python文件打包無法導入ultralytics模塊

&#x1f4a5;打包的 .exe 閃退了&#xff1f;別慌&#xff01;教你逐步排查 PyInstaller 打包的所有錯誤&#xff01; &#x1f6e0; 運行 .exe 查看報錯信息? 正確姿勢&#xff1a; ? importlib 動態導入導致打包失敗?什么是動態導入&#xff1f;? 解決方式&#xff1a; …

【React框架】什么是 Vite?如何使用vite自動生成react的目錄?

什么是 Vite&#xff1f; Vite 是一個基于原生 ES Modules 開發的前端構建工具&#xff0c;由 Evan You&#xff08;Vue 的作者&#xff09;開發。它最大的特點包括&#xff1a; 極速冷啟動&#xff1a;因為利用了瀏覽器原生的 ES Modules&#xff0c;所以在開發時無需等待整…

深入解讀 React 純組件(PureComponent)

什么是純組件&#xff1f; React 的純組件(PureComponent)是 React.Component 的一個變體&#xff0c;它通過淺比較(shallow comparison)props 和 state 來自動實現 shouldComponentUpdate() 方法&#xff0c;從而優化性能。 核心特點 1. 自動淺比較&#xff1a; PureCompon…

JavaScript數組方法:`some()`的全面解析與應用

文章目錄 JavaScript數組方法&#xff1a;some()的全面解析與應用一、some()方法的基本概念語法參數說明返回值 二、some()方法的核心特點三、基礎用法示例示例1&#xff1a;檢查數組中是否有大于10的元素示例2&#xff1a;檢查字符串數組中是否包含特定子串 四、實際應用場景1…

判斷兩個 IP 地址是否在同一子網 C

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> // 將點分十進制的 IP 地址轉換為 32 位無符號整數 unsigned int ip_to_uint(const char *ip) { struct in_addr addr; if (inet_pton(AF_INET, ip, &am…