# 監控所有磁盤 pt-diskstats # 僅監控 sda2 pt-diskstats --devices-regex sda2
交互界面按鍵:d 切換設備、r 切換讀/寫、q 退出。支持遠程采集文件分析。
模擬命名管道,按指定行數切割大文件流式傳遞給 LOAD DATA INFILE,避免單次大事務阻塞。
# 每 100 萬行切一塊,默認 fifo /tmp/pt-fifo-split 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
原理:生產者寫入 fifo 達行數發 EOF,消費者讀完關閉,生產者重建 fifo 繼續,實現流控。
pt-summary
以 root 運行最佳,收集 CPU/內存/磁盤/網絡/內核參數等,輸出易對比/郵件分享的文本報告。
守護進程模式,觸發條件滿足時自動收集全套診斷數據包(GLOBAL STATUS/VARIABLES、InnoDB STATUS、processlist、top、vmstat、lsof、netstat、pmap 等)。
# 觸發條件: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
生成文件列表示例:2012_06_04_17_31_49-{df,diskstats,innodbstatus1,processlist,top,vmstat,...}
# 分析慢查詢日志,輸出未被使用的索引報告 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
輸入 SQL 格式需與慢查詢一致,否則先用 pt-query-digest 轉換。
pt-pmp -p 21933 pt-pmp -b /usr/local/mysql/bin/mysqld_safe
# 解析包含 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
輸出樹狀結構,清晰展示掃描類型、連接順序、索引使用、Rows 預估等,極大降低閱讀門檻。