facebook twitter hatena line email

「Mysql/slow.log設定」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(設定方法(mysql 5.1以降(cnf出ない場合)
(実行ログ(mysql 5.1以降)
 
(同じ利用者による、間の18版が非表示)
行4: 行4:
 
  [mysqld]
 
  [mysqld]
 
  long_query_time=1 # x秒より遅いSQLのみログに追記 # 追加
 
  long_query_time=1 # x秒より遅いSQLのみログに追記 # 追加
  log-slow-queries=/var/log/slow.log # 追加
+
  log-slow-queries=/var/lib/mysql/mysql-slow.log # 追加
  long_query_time=0.1
+
  long_query_time=2
 
#/var/log/slow.logファイルをmysql:mysqlで生成
 
#/var/log/slow.logファイルをmysql:mysqlで生成
 
#mysql再起動
 
#mysql再起動
行11: 行11:
 
==設定方法(mysql 5.1以降==
 
==設定方法(mysql 5.1以降==
 
#/etc/my.cnf  
 
#/etc/my.cnf  
 +
[mysqld]
 
  slow_query_log=ON
 
  slow_query_log=ON
  slow_query_log_file=/var/log/mysql-slow.log
+
  slow_query_log_file=/var/lib/mysql/mysql-slow.log
 +
long_query_time = 2
 
#/var/log/mysql-slow.logファイルをmysql:mysqlで生成
 
#/var/log/mysql-slow.logファイルをmysql:mysqlで生成
 
==設定方法(mysql 5.1以降(cnf出ない場合==
 
mysql> SET GLOBAL slow_query_log=ON;
 
mysql> SET GLOBAL slow_query_log_file='/var/log/mysql-slow.log'; #ダメな場合は下の行を試してみる
 
mysql> SET GLOBAL slow_query_log_file='/var/lib/mysql/mysql-slow.log';
 
mysql> SET GLOBAL long_query_time=5;
 
  
 
==slowlogの集計==
 
==slowlogの集計==
  mysqldumpslow -s t /var/log/mysql-slow.log
+
  mysqldumpslow -s t /var/lib/mysql/mysql-slow.log
  
==動的にsqlログを取得==
+
==動的にslow-logを取得==
 
#まずは現状設定確認
 
#まずは現状設定確認
  mysql > show global variables like '%query%';
+
  mysql > show global variables like '%_query_%';
 
#変更する
 
#変更する
  mysql > set global slow_query_log = 1;
+
  mysql> SET GLOBAL slow_query_log=ON;
  mysql > set global slow_query_log_file = '/var/log/mysql-slow.log';
+
  mysql> SET GLOBAL slow_query_log_file='/var/lib/mysql/mysql-slow.log';
  mysql > set global long_query_time = 3;
+
  mysql> SET GLOBAL long_query_time=2;
 +
 
 
#元に戻しておく
 
#元に戻しておく
 +
 +
==mysql-slow-logの過去logを自動で削除==
 +
10日で削除されます
 +
# vi /etc/logrotate.d/mysqld
 +
/var/lib/mysql/*log {
 +
    daily
 +
    rotate 10
 +
    missingok
 +
    notifempty
 +
    sharedscripts
 +
    delaycompress
 +
    postrotate
 +
        /sbin/service mysqld reload > /dev/null 2>/dev/null || true
 +
    endscript
 +
}
 +
 +
==実行ログ(mysql 5.1以降==
 +
/var/log/mysql がなければ作成しておく(mysql権限)
 +
 +
#/etc/my.cnf
 +
[mysqld]
 +
general_log = 1
 +
general_log_file = /var/log/mysql/mysql.log

2015年8月25日 (火) 20:47時点における最新版

設定方法(mysql 5.1以前

  1. rootでログイン
  2. /etc/my.cnf
[mysqld]
long_query_time=1 # x秒より遅いSQLのみログに追記 # 追加
log-slow-queries=/var/lib/mysql/mysql-slow.log # 追加
long_query_time=2
  1. /var/log/slow.logファイルをmysql:mysqlで生成
  2. mysql再起動

設定方法(mysql 5.1以降

  1. /etc/my.cnf
[mysqld]
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/mysql-slow.log
long_query_time = 2
  1. /var/log/mysql-slow.logファイルをmysql:mysqlで生成

slowlogの集計

mysqldumpslow -s t /var/lib/mysql/mysql-slow.log

動的にslow-logを取得

  1. まずは現状設定確認
mysql > show global variables like '%_query_%';
  1. 変更する
mysql> SET GLOBAL slow_query_log=ON;
mysql> SET GLOBAL slow_query_log_file='/var/lib/mysql/mysql-slow.log';
mysql> SET GLOBAL long_query_time=2;
  1. 元に戻しておく

mysql-slow-logの過去logを自動で削除

10日で削除されます

# vi /etc/logrotate.d/mysqld
/var/lib/mysql/*log {
   daily
   rotate 10
   missingok
   notifempty
   sharedscripts
   delaycompress
   postrotate
       /sbin/service mysqld reload > /dev/null 2>/dev/null || true
   endscript
}

実行ログ(mysql 5.1以降

/var/log/mysql がなければ作成しておく(mysql権限)

  1. /etc/my.cnf
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/mysql.log