[DTI]ServersMan@VPS:Mysql slow query logging settings

MySQLで「時間のかかるクエリー」をロギングします。(2012/12/23作成)

時間のかかる congerdesign / Pixabay

0.バージョン情報

[crayon]
$ mysql –version
mysql  Ver 14.14 Distrib 5.5.25a, for Linux (i686) using readline 5.1

$ sudo mkdir /var/log/mysql
$ sudo  chown mysql:mysql /var/log/mysql
[/crayon]

1.ログセッティング

[crayon]
$ sudo vi /etc/my.cnf

slow_query_log = ON
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 0

$ sudo /etc/init.d/mysqld restart
[/crayon]

2.ログ解析方法

[crayon]
$ which mysqldumpslow
/usr/bin/mysqldumpslow

$ sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log

[/crayon]

3.ログローテート

[crayon]
$ which mysqladmin
/usr/bin/mysqladmin

$ mysqladmin –version
mysqladmin  Ver 8.42 Distrib 5.5.25a, for Linux on i686
[/crayon]

[crayon]
$ sudo vi /etc/my.cnf
[mysqladmin]
user = root
password = “”
[/crayon]

[crayon]
$ sudo vi /etc/logrotate.d/mysql
[/crayon]

[crayon]
# /etc/logrotate.d/mysql
# Note:単純にローテートする設定
/var/log/mysql/mysql-slow.log {
create 660 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}
[/crayon]

[crayon]
# /etc/logrotate.d/mysql
# Note:ローテート直前ログを特定メールアドレスに送信、その後ローテートする設定
/var/log/mysql/mysql-slow.log {
create 660 mysql mysql
notifempty
daily
rotate 3
missingok
compress
prerotate
/usr/bin/mysqldumpslow -s t /var/log/mysql/mysql-slow.log 2>/dev/null | \
mail -s “Mysql Slowlog Report” 特定メールアドレス
endscript
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}
[/crayon]

以上

About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください