LoginSignup
1
4

More than 5 years have passed since last update.

MySQL の Slow Log の log_output=table でも mysqldumpslow で解析したい

Posted at

mysqldumpslow は log_output=file で出力されたファイルしか受け取りません。

私が今使っている GCP の Cloud SQL だと、slow log をlog_output=table でしか受け取れません。

そこで、mysql.slow_log テーブルからデータを取得して、log_output=file で吐くログと同じ形式にします。

mysql -h [host] -u[user] -p -D mysql -s -r -e "SELECT CONCAT( '# Time: ', DATE_FORMAT(start_time, '%y%m%d %H%i%s'), '\n', '# User@Host: ', user_host, '\n', '# Query_time: ', TIME_TO_SEC(query_time), ' Lock_time: ', TIME_TO_SEC(lock_time), ' Rows_sent: ', rows_sent, ' Rows_examined: ', rows_examined, '\n', sql_text, ';' ) FROM mysql.slow_log" > /tmp/mysql.slow_log.log

これで、以下のようにして slow log を解析できます。

mysqldumpslow /tmp/mysql.slow_log.log

参考資料

MySQLでmysql.slow_logテーブルをslow queryログファイル形式でダンプする|てくめも@ecoop.net

このサイトのコマンドは↑"や'が置換されてしまっていてコピペすると動きません。そのためこちらの記事を追加しました。

mysql.slow_logテーブルからmysqldumpslowする - Qiita

こちらの記事のコマンドは私の環境ではうまく動きませんでした。

1
4
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
1
4