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
こちらの記事のコマンドは私の環境ではうまく動きませんでした。