Memo

メモ > サーバ > 各論: コマンド > MySQLでスロークエリログを記録

MySQLでスロークエリログを記録
※実際の調査内容は「Trouble.txt」の「サーバが重い・サーバに繋がらない」を参照 ※AWSでのスロークエリ確認方法は「AWS.txt」の「RDS」を参照 Mysql slow queryの設定と解析方法 - 主夫ときどきプログラマ http://masayuki14.hatenablog.com/entry/20120704/1341360260
mysql> SELECT * FROM mysql.slow_log; … スロークエリを確認 Empty set (0.30 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'slow_query_log'; … スロークエリのON/OFFを確認(初期設定はOFF) +----------------+-------+ | Variable_name | Value | +----------------+-------+ | slow_query_log | OFF | +----------------+-------+ 1 row in set (0.25 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time'; … スロークエリの記録時間を確認(初期設定は10秒) +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'log_output'; … スロークエリの記録先を確認(初期設定はファイル) +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | FILE | +---------------+-------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'slow_query_log_file'; … スロークエリの記録ファイルを確認(初期設定は /var/lib/mysql/refirio-slow.log) +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | slow_query_log_file | /var/lib/mysql/refirio-slow.log | +---------------------+---------------------------------+ 1 row in set (0.01 sec) mysql> SET GLOBAL slow_query_log = ON; … スロークエリのON/OFFを変更 mysql> SET GLOBAL long_query_time = 1.0; … スロークエリの記録時間を変更 mysql> SET GLOBAL log_output = 'TABLE'; … スロークエリの記録先をデータベースに変更 mysql> SELECT * FROM mysql.slow_log; … スロークエリを確認 mysql> SELECT * FROM mysql.general_log; … 一般ログを確認 mysql> SELECT * FROM mysql.slow_log ORDER BY query_time DESC LIMIT 10; … スロークエリを時間の長い順に表示する例
なお以下のようにすると、スロークエリログをファイルに書き出せる
$ echo 'SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 100;' | mysql -u ユーザー名 -p データベース名 > ダンプファイル名
■ファイルに記録したスロークエリを解析する例 スロークエリの出力ファイルを変更する場合
mysql> set global slow_query_log_file = '/tmp/mysql-slow.log';
スロークエリを表示
$ vi /var/run/mysqld/mysqld-slow.log
スロークエリを解析(実行時間の遅い順に表示)
$ mysqldumpslow -s t /var/run/mysqld/mysqld-slow.log

Advertisement