LoginSignup
0
1

More than 5 years have passed since last update.

MYSQLでスロークエリのログが出力されない

Posted at

事象

表題の通り。
スロークエリを確認しようと思ったら出力されずにハマったのでメモ。

スロークエリの出力設定

サーバは再起動したくなかったのでset globals で対応。

set global slow_query_log = 1;
set global long_query_time = 5; --5秒以上なら出力
set global slow_query_log_file ='slow_query.log'; -- 出力先

設定を確認


SELECT * 
FROM information_schema.global_variables
WHERE VARIABLE_NAME = "slow_query_log"
OR VARIABLE_NAME = "long_query_time"
OR VARIABLE_NAME = "slow_query_log_file";

+---------------------+---------------------+
| VARIABLE_NAME       | VARIABLE_VALUE      |
+---------------------+---------------------+
| SLOW_QUERY_LOG      | ON                  |
| LONG_QUERY_TIME     | 5.000000            |
| SLOW_QUERY_LOG_FILE | slow_query.log      |
+---------------------+---------------------+
3 rows in set (0.00 sec)

正常に設定されました。
出力先にもちゃんとログファイルが作成されています。

実際に確認

設定が完了したので、実際に重たいクエリを実行。
その後、ログファイルを確認。

ファイルの権限も問題ないのに出力されない・・・。

原因

「log_output」が "NONE"になっていました・・・。
FILEにしてやると正常に出力されました。

set global log_output = 'FILE';

めでたしめでたし。

ちなみに、TABLEにするとslow_logテーブルに出力されるようになりました。

set global log_output = 'TABLE';
SELECT * FROM mysql.slow_log;

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1