首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 連線狀態監控指標完整解析與圖形化實作

     編輯:MySQL 資料庫相關知識

核心狀態變數含義速查

變數含義異常判讀
Aborted_clients客戶端異常斷開數驟增 → 檢查網路/防火牆/應用連線池配置
Aborted_connects連線嘗試失敗數驟增 → 檢查認證錯誤、max_connections 滿、主機拒絕
Connections總連線嘗試次數配合 Threads_created 計算緩存命中率
Created_tmp_tables隱含臨時表建立數過大 → 檢查查詢優化、tmp_table_size
Delayed_insert_threadsDELAYED 插入處理緒數--
Delayed_writesDELAYED 寫入行數--
Delayed_errorsDELAYED 寫入錯誤行數> 0 → 檢查唯一鍵衝突等
Flush_commandsFLUSH 指令執行次數--
Handler_read_first讀索引首行次數高 → 全索引掃描多
Handler_read_key索引鍵值讀取次數高 → 索引查詢多 (正常)
Handler_read_next依索引序讀下一行高 → 範圍查詢多
Handler_read_rnd固定位置讀取 (需排序)高 → 大量排序/全表掃描
Handler_read_rnd_next讀下一行 (全表掃描)高 → 缺索引、需優化
Key_read_requests索引快取讀取請求配合 Key_reads 算命中率
Key_reads實體磁碟讀索引塊高 → key_buffer_size 不足
Max_used_connections歷史峰值併發連線規劃 max_connections 依據
Open_tables目前開啟表數配合 Opened_tables 算快取命中
Opened_tables歷史開啟表總數快速增長 → table_open_cache 過小
Questions總查詢數 (含所有類型)QPS 基準 = Questions / Uptime
Slow_queries慢查詢累計數> 0 需分析慢查詢日誌
Threads_connected當前開啟連線數即時併發連線數
Threads_running非睡眠執行緒數即時活躍查詢數
Uptime服務運行秒數重啟後歸零

即時監控指令

# 单次快照
mysqladmin -u user -p -h host extended-status

# 类 top 实时刷新 (每秒刷新, 显示 100 行)
mysqladmin -u user -p -h host extended-status -i 1 -c 100 -r

# 抓取特定指标
mysqladmin ext -i 1 | grep -i 'threads\|questions\|slow'

圖形化監控實作 (rrdtool)

  1. 收集腳本 (collect_mysql.sh) 每分鐘跑一次:
#!/bin/bash
HOST="127.0.0.1"
USER="monitor"
PASS="xxx"
RRD="/var/lib/rrd/mysql.rrd"

VALUES=$(mysqladmin -u$USER -p$PASS -h$HOST extended-status -r | \
  awk '/^(Threads_connected|Threads_running|Questions|Slow_queries|Key_read_requests|Key_reads|Open_tables|Opened_tables|Created_tmp_disk_tables|Created_tmp_tables|Table_locks_waited|Table_locks_immediate)\|/ {print $4}' | \
  paste -sd:)

rrdtool update $RRD N:$VALUES
  1. 建立 RRD 資料庫 (定義 10 個 DS,步長 60s,保留 1 年):
rrdtool create mysql.rrd --step 60 \
  DS:threads_c:GAUGE:120:0:10000 \
  DS:threads_r:GAUGE:120:0:10000 \
  DS:questions:DERIVE:120:0:1000000 \
  DS:slow_q:DERIVE:120:0:10000 \
  DS:key_req:DERIVE:120:0:10000000 \
  DS:key_read:DERIVE:120:0:1000000 \
  DS:open_t:GAUGE:120:0:100000 \
  DS:opened_t:DERIVE:120:0:1000000 \
  DS:tmp_disk:DERIVE:120:0:100000 \
  DS:tmp_mem:DERIVE:120:0:1000000 \
  DS:lock_wait:DERIVE:120:0:1000000 \
  DS:lock_imm:DERIVE:120:0:1000000 \
  RRA:AVERAGE:0.5:1:525600 \
  RRA:AVERAGE:0.5:60:8760 \
  RRA:MAX:0.5:1:525600
  1. 繪圖腳本產出 PNG 嵌入 Grafana/自建儀表板。

關鍵告警規則建議

  • Threads_connected / max_connections > 0.85 → 告警
  • Slow_queries 5 分鐘增量 > 10 → 告警
  • Key_reads / Key_read_requests > 0.01 → 告警
  • Created_tmp_disk_tables / Created_tmp_tables > 0.25 → 告警
  • Table_locks_waited / Table_locks_immediate > 0.001 → 告警

官方 mysqladmin status 輸出解讀

Uptime: 123456
Threads: 15
Questions: 987654
Slow queries: 12
Opens: 3456
Flush tables: 1
Open tables: 256
Memory in use: 123M

快速掌握服務健康度的單行摘要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved