首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 慢日誌按時間範圍切割分析腳本:cutlogbytime 使用指南

     編輯:MySQL 資料庫相關知識

面對數 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

實際截取 2013-04-05 全天日誌

./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,歡迎貢獻改進。

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