UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

MySQL性能モニタリング&ロギングツール

MySQL性能モニタリング&ロギングツール


0.改訂履歴

  • 2005.08.24 新規作成
  • 2005.10.03 Excelで分析しやすいように出力ファイル形式をちょっと変更.

1.はじめに

 このドキュメントでは,MySQLの稼働をモニタリングする自作ツールの紹介をする. 非常に簡単な事なので,MySQLを稼働させたたら,管理者は最低限のこのツールを仕込んでおくと,後々に高負荷問題が発生した場合に問題がいつから発生しているか分析できて便利である.

2.簡単MySQLモニタリングツール

  • 次のようなプログラムを作成する.
[root@jupiter bin]# cat MySQLstatusLog.sh 
#!/bin/sh

NOW_DATE=`date +%Y.%m.%d`
NOW_TIME=`date +%H:%M:%S`
MYSQLADMIN="/usr/local/mysql/bin/mysqladmin"
MYSQL_USER=root
MYSQL_PASS=rootuserpassword
LOGFILE=/var/log/MySQLstatus.log


echo a $NOW_DATE $NOW_TIME `$MYSQLADMIN status -u$MYSQL_USER -p$MYSQL_PASS` >> $LOGFILE
[root@jupiter bin]#  
  • 青色の部分は自分の環境にカスタマイズすればすぐ動く.
  • このプログラムを実行すると,次のような次のようなログが出力される.
[root@jupiter bin]# tail -n 10 /var/log/MySQLstatus.log
2005.08.24 18:20:12 Uptime: 5432561 Threads: 31 Questions: 25687194 Slow queries: 6091
 Opens: 88067 Flush tables: 1 Open tables: 64 Queries per second avg: 4.728
2005.08.24 18:21:00 Uptime: 5432609 Threads: 31 Questions: 25687813 Slow queries: 6091
 Opens: 88067 Flush tables: 1 Open tables: 64 Queries per second avg: 4.728
2005.08.24 18:22:00 Uptime: 5432669 Threads: 34 Questions: 25688773 Slow queries: 6091
 Opens: 88067 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
2005.08.24 18:23:00 Uptime: 5432729 Threads: 31 Questions: 25689574 Slow queries: 6091
 Opens: 88069 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
2005.08.24 18:23:54 Uptime: 5432783 Threads: 31 Questions: 25690313 Slow queries: 6091
 Opens: 88070 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
2005.08.24 18:24:00 Uptime: 5432789 Threads: 32 Questions: 25690396 Slow queries: 6091
 Opens: 88070 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
2005.08.24 18:24:09 Uptime: 5432798 Threads: 32 Questions: 25690565 Slow queries: 6091
 Opens: 88070 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
2005.08.24 18:25:00 Uptime: 5432849 Threads: 35 Questions: 25691225 Slow queries: 6091
 Opens: 88070 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
2005.08.24 18:26:00 Uptime: 5432909 Threads: 35 Questions: 25691987 Slow queries: 6091
 Opens: 88073 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
2005.08.24 18:27:00 Uptime: 5432969 Threads: 36 Questions: 25692771 Slow queries: 6091
 Opens: 88073 Flush tables: 1 Open tables: 64 Queries per second avg: 4.729
[root@jupiter bin]# 
  • この情報をもとに,いつの段階からSlow queriesが増えたか,スレッド数が急激に増えたタイミング等を探ってチューニングを行っていく.

3.Excelで分析する為に

  • 次のようなシェルプログラムを作成しておく.
[root@jupiter bin]#  cat MySQLmonLog2CSV.sh 
#!/bin/sh

#Env

LOGFILE=MySQLstatus.log
COLNAME_DATE=Date
COLNAME_TIME=Time
COLNAME_UPTIME=Uptime
COLNAME_THREADS=Threads
COLNAME_QUERY=Query
COLNAME_SLOW_QUERY=SlowQuery
COLNAME_OPENS=Opens
COLNAME_FLUSH_QUERY=FlushTables 
COLNAME_OPENTABLES=OpenTables
COLNAME_QUERYAVG=QueryAvg
TEMPDIR=/var/tmp
CSVFILE=Excelfile.csv

#Cut Row

cat $LOGFILE | cut -f  1 -d' ' > $TEMPDIR/$COLNAME_DATE
cat $LOGFILE | cut -f  2 -d' ' > $TEMPDIR/$COLNAME_TIME
cat $LOGFILE | cut -f  4 -d' ' > $TEMPDIR/$COLNAME_UPTIME
cat $LOGFILE | cut -f  6 -d' ' > $TEMPDIR/$COLNAME_THREADS
cat $LOGFILE | cut -f  8 -d' ' > $TEMPDIR/$COLNAME_QUERY
cat $LOGFILE | cut -f 11 -d' ' > $TEMPDIR/$COLNAME_SLOW_QUERY
cat $LOGFILE | cut -f 13 -d' ' > $TEMPDIR/$COLNAME_OPENS
cat $LOGFILE | cut -f 16 -d' ' > $TEMPDIR/$COLNAME_FLUSH_QUERY
cat $LOGFILE | cut -f 19 -d' ' > $TEMPDIR/$COLNAME_OPENTABLES
cat $LOGFILE | cut -f 24 -d' ' > $TEMPDIR/$COLNAME_QUERYAVG

#Header  

echo $COLNAME_DATE,$COLNAME_TIME,$COLNAME_UPTIME,$COLNAME_THREADS,¥
  $COLNAME_QUERY, ¥
  $COLNAME_SLOW_QUERY,$COLNAME_OPENS,$COLNAME_FLUSH_QUERY,  \
  $COLNAME_OPENTABLES,$COLNAME_QUERYAVG \
  > $CSVFILE

paste -d , $TEMPDIR/$COLNAME_DATE $TEMPDIR/$COLNAME_TIME ¥
  $TEMPDIR/$COLNAME_UPTIME ¥
  $TEMPDIR/$COLNAME_THREADS $TEMPDIR/$COLNAME_QUERY \
  $TEMPDIR/$COLNAME_SLOW_QUERY $TEMPDIR/$COLNAME_OPENS \
  $TEMPDIR/$COLNAME_FLUSH_QUERY $TEMPDIR/$COLNAME_OPENTABLES \
  $TEMPDIR/$COLNAME_QUERYAVG \
  >> $CSVFILE
[root@jupiter bin]#   
  • このシェルプログラムでは,前述のMySQLstatus.Logファイルを加工してCSVファイルにする.
  • CSVなので,そのままExcelで編集できるようになる.


広告スペース
Google