MySQLでのスローログ情報の取得方法

1186 ワード

今日はcaseを処理します.データベースが異常で、接続数が急増しました.スローログを分析しようと思ったが、スローログを見ると何Gもあり、しかも短いログフォーマットで、その時点を見つけるのは比較的難しい.そこで、スローログからポイントログを時間単位で抽出するスクリプトを書きました.スクリプト:
https://github.com/wubx/mysql-binlog-statistic/blob/master/bin/cutlogbytime
使用方法:

   cutlogbytime 
  
#
./cutlogbytime /path/slowlogfile starttime endtime  > dstfile.log

タイムスタンプを書く必要がある

mysql> select unix_timestamp('2013-04-05');
+------------------------------+
| unix_timestamp('2013-04-05') |
+------------------------------+
| 1365091200 |
+------------------------------+
1 row in set (0.00 sec)

mysql> select unix_timestamp('2013-04-06');
+------------------------------+
| unix_timestamp('2013-04-06') |
+------------------------------+
| 1365177600 |
+------------------------------+
1 row in set (0.00 sec)


./cutlogbytime /path/slowlogfile 1365091200 1365177600 > 20130405_slow.log


これにより、一日のログファイルが小さく分析しやすくなります.また、日のファイルに基づいて、1日のある時点のログを取ることができます.