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

【中古車のガリバー】中古車購入

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
}

以上

About yoshimasa

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