MySQLで「時間のかかるクエリー」をロギングします。(2012/12/23作成)
congerdesign / Pixabay
0.バージョン情報
$ 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
1.ログセッティング
$ 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
2.ログ解析方法
$ which mysqldumpslow /usr/bin/mysqldumpslow $ sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log …
3.ログローテート
$ which mysqladmin /usr/bin/mysqladmin $ mysqladmin --version mysqladmin Ver 8.42 Distrib 5.5.25a, for Linux on i686
$ sudo vi /etc/my.cnf [mysqladmin] user = root password = ""
$ sudo vi /etc/logrotate.d/mysql
# /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 }
# /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 }
以上