首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 監控工具 Innotop 詳解與慢查詢配置實戰

     編輯:MySQL 綜合教學

Innotop 深度使用指南:從安裝到生產排障實戰

本文為 Innotop 進階篇,補充配置文件、過濾器、自定義報警、與 pt-query-digest 聯動分析慢查詢的完整鏈路。

一、配置文件 ~/.innotop/innotop.conf

[default]
user = root
password = xxx
host = localhost
delay = 3
mode = Q
color = 1
# 過濾掉 Sleep 線程
filter = Command != Sleep
# 高亮長查詢
highlight = Time > 10

啟動自動讀取配置,無需每次輸入參數。

二、核心模式深度解析

Q - Query List

  • 列:Id、User、Host、DB、Command、Time、State、Info(SQL 文本)。
  • 操作:k Kill 選中查詢,e EXPLAIN,f 過濾,o 排序切換。

T - InnoDB Transactions

  • 顯示事務 ID、狀態、鎖模式、等待鎖、已修改行數、Undo Log 記錄數。
  • 長事務(Time > 60s)易導致 Purge 阻塞、History List 增長,重點關注。

L - Locks

  • 表鎖:LOCK TABLE、MDL 鎖(DDL 阻塞 DML)。
  • 行鎖:InnoDB 記錄鎖、間隙鎖、Next-Key Lock,定位死鎖參與者。

S - Slow Queries

  • 實時讀取 slow_query_log_file,按 long_query_time 過濾。
  • 按 d 切換顯示完整 SQL、執行時間、掃描行數、索引使用情況。

三、慢查詢分析閉環

  1. Innotop S 模式發現高頻慢 SQL。
  2. 導出慢查詢日誌片段:grep -A 20 'Query_time: 10' /var/lib/mysql/mysql-slow.log > slow_sample.log。
  3. pt-query-digest slow_sample.log 生成聚合報告:按總耗時/平均耗時/頻率排序,給出 EXPLAIN 建議。
  4. 根據報告優化索引/改寫 SQL/調整參數。
  5. 驗證:Innotop Q 模式觀察同類查詢 Time 下降、Rows examined 減少。

四、報警與自動化

  • 腳本輪詢 innotop --count 1 --mode T 解析輸出,發現長事務/大量鎖等待發送告警。
  • 整合到 Zabbix/Prometheus:mysql_innotop_long_trx_count、mysql_innotop_lock_waiters 指標。

五、常見問題

  • 連接失敗:確認 DBD::mysql 編譯正確、mysql.sock 路徑一致(或用 -h 127.0.0.1 強制 TCP)。
  • 中文亂碼:終端設置 UTF-8,MySQL 連接字符集 utf8mb4。
  • 權限不足:需 PROCESS、REPLICATION CLIENT、SUPER 權限才能查看所有線程/變量/殺查詢。

總結

Innotop 是 DBA 「隨身聽診器」:秒級發現異常查詢、長事務、鎖爭用、主從延遲。配合 pt-query-digest 做深度分析,構建「發現->分析->優化->驗證」閉環,是 MySQL 性能治理的核心工具鏈。

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