慢日誌達數 GB、短格式、無時間索引,排查「連接數突增」等突發故障時,全文檢索極慢。需一個工具按 Unix 時間戳區間切出目標片段,再餵給 pt-query-digest 分析。
git clone https://github.com/wubx/mysql-binlog-statistic.git
cd mysql-binlog-statistic/bin
# 直接可執行:cutlogbytime
./cutlogbytime /path/slow.log start_unix_ts end_unix_ts > slice.log
mysql> SELECT UNIX_TIMESTAMP('2013-04-05'); -- 1365091200
mysql> SELECT UNIX_TIMESTAMP('2013-04-06'); -- 1365177600
shell> ./cutlogbytime /var/log/mysql/slow.log 1365091200 1365177600 > 20130405_slow.log
# 先切出一天
./cutlogbytime slow.log 1365091200 1365177600 > day.log
# 再在一天內切出故障小時
./cutlogbytime day.log 1365120000 1365130000 > hour.log
# 最後餵給分析工具
pt-query-digest hour.log
# Time: YYMMDD HH:MM:SS 開頭。[start, end) 區間。# User@Host、# Query_time、SQL 正文)整體輸出。log_timestamps=SYSTEM(默認),且格式為標準短格式。log_slow_admin_statements 等)可能需微調解析邏輯。split -l 1000000 分塊並行切片再合併。