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

Percona Toolkit 系統與性能診斷工具實戰:磁盤監控、系統摘要、故障採集、索引使用分析、執行計劃可視化

     編輯:MySQL 綜合教學

Percona Toolkit 系統與性能診斷工具實戰:磁盤監控、系統摘要、故障採集、索引使用分析、執行計劃可視化

Percona Toolkit 的系統類與性能類工具能幫助 DBA 快速掌握主機健康狀態、捕獲間歇性故障現場、分析索引使用效率、可視化執行計劃。本文詳細介紹 pt-diskstats、pt-fifo-split、pt-summary、pt-stalk、pt-index-usage、pt-pmp、pt-visual-explain 七大工具的實戰用法。

一、系統類工具

1. pt-diskstats:交互式磁盤 I/O 監控

類似 iostat 但更詳細、交互式,支持遠程採集數據分析。

# 監控所有磁盤
pt-diskstats
# 僅監控 sda2
pt-diskstats --devices-regex sda2

2. pt-fifo-split:大文件分塊管道導入利器

模擬切割大文件並通過 FIFO 管道流式傳輸,避免一次性讀入內存,極適合 LOAD DATA INFILE 大數據導入。

# 每 100 萬行輸出一個 EOF 到默認 FIFO
pt-fifo-split --lines 1000000 hugefile.txt
while [ -e /tmp/pt-fifo-split ]; do cat /tmp/pt-fifo-split; done

# 指定 FIFO 路徑並直接導入 MySQL
pt-fifo-split infile.txt --fifo /tmp/my-fifo --lines 1000000
while [ -e /tmp/my-fifo ]; do
  mysql -e "set foreign_key_checks=0; set sql_log_bin=0; set unique_checks=0; load data local infile '/tmp/my-fifo' into table load_test fields terminated by '\t' lines terminated by '\n' (col1, col2);"
  sleep 1;
done

3. pt-summary:系統配置與狀態一鍵摘要

非調優工具,產生易讀、易對比、易郵件分發的系統報告。建議 root 權限運行。

pt-summary

4. pt-stalk:間歇性故障自動採集神器

作為守護進程運行,監聽觸發條件(默認 SHOW GLOBAL STATUS),滿足閾值時自動採集數十種診斷數據(進程列表、InnoDB 狀態、磁盤、內存、網絡、鎖等),存入時間戳目錄。

# 觸發條件:Threads_running > 20,數據存 /tmp/test
pt-stalk --function status --variable Threads_running --threshold 20 --dest /tmp/test -- -uroot -pzhang@123 -h192.168.3.135

# 觸發條件:Processlist 中 State=statistics 超過 20 個
pt-stalk --function processlist --variable State --match statistics --threshold 20 --dest /tmp/test -- -uroot -pzhang@123 -h192.168.3.135

採集產物示例:*-df、*-diskstats、*-innodbstatus1/2、*-processlist、*-top、*-vmstat 等。

二、性能類工具

5. pt-index-usage:索引使用情況分析

從慢查詢/General Log 讀取 SQL,執行 EXPLAIN 分析索引使用,生成未被使用索引報告,或將結果寫入數據庫表。

# 直接輸出報告
pt-index-usage /data/dbdata/localhost-slow.log --host=localhost --user=root --password=zhang@123
# 寫入數據庫(自動建表)
pt-index-usage /data/dbdata/localhost-slow.log --host=localhost --user=root --password=zhang@123 --no-report --create-save-results-database

6. pt-pmp:進程堆棧聚合分析

對 MySQL 進程進行 GDB 堆棧跟蹤並聚合,快速定位卡住線程的代碼路徑。

pt-pmp -p 21933
pt-pmp -b /usr/local/mysql/bin/mysqld_safe

7. pt-visual-explain:執行計劃樹狀可視化

將 EXPLAIN 輸出轉為樹狀結構,極大降低閱讀理解成本。

# 分析包含 EXPLAIN 結果的文件
pt-visual-explain aaa
# 分析包含 SQL 的文件,自動連接數據庫執行 EXPLAIN
pt-visual-explain --connect aaa --user=root --password=zhang@123
# 管道直連
mysql -uroot -pzhang@123 -e "explain select email from test.collect_data where id=101992419" | pt-visual-explain
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved