面對數 GB 的慢查詢日誌(短格式),手工定位特定時間點極其困難。編寫 cutlogbytime 腳本(GitHub 來源),依 Unix 時間戳截取指定區間日誌,大幅提升分析效率。
./cutlogbytime /path/slowlogfile start_timestamp end_timestamp > dstfile.log
mysql> SELECT UNIX_TIMESTAMP('2013-04-05'); -- 1365091200
mysql> SELECT UNIX_TIMESTAMP('2013-04-06'); -- 1365177600
./cutlogbytime /path/slowlogfile 1365091200 1365177600 > 20130405_slow.log
pt-query-digest 分析切割後的小檔案,快速定位 Top SQL。解析慢日誌每條語句前的 # Time: YYMMDD HH:MM:SS 時間標記,轉換為 Unix 時間戳比對範圍,符合則輸出該語句塊(含 # User@Host、# Query_time、SQL 本體等)。
專案地址:mysql-binlog-statistic,歡迎貢獻改進。