MySQLログの通常のクエリーログと遅いクエリーログ

3196 ワード

Intro
以前の記事では、MySQLのログ・タイプは、エラー・ログ(error_log)、クエリー・ログ(query_log)、バイナリ・ログ(binary_log)、error_の3つに分けることができます.logの紹介と使い方はMySQLログのerrorを参照してください.log、ここでは主にgeneralを紹介します.logとslow_query_logの原理と使い方.
汎用クエリー・ログ
汎用クエリー・ログ(general_log)は、主に各クライアントがデータベースに接続する際の関連情報と、データベース上で実行されるSQL文をクエリーするために使用されます.構成方法は、次のとおりです.
1、クエリー共通クエリーログがその保存パスを開くかどうか:
mysql> show variables like "general_log%";
+------------------+------------------------------+
| Variable_name    | Value                        |
+------------------+------------------------------+
| general_log      | OFF                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)


画面出力general_logおよびgeneral_log_fileには、現在の汎用クエリー・ログのスイッチング状態およびパスが記録されている.
2、共通クエリーログを開く
    set global general_log = ON

クエリが成功したかどうか:
mysql> show variables like "general_log%";
+------------------+------------------------------+
| Variable_name    | Value                        |
+------------------+------------------------------+
| general_log      | ON                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)


成功しました.
生成され、正しく記録されているかどうかを確認します.
[root@localhost ~]# cat /var/lib/mysql/localhost.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
2017-08-14T09:33:11.364650Z     5 Quit  
2017-08-14T09:33:20.671113Z     6 Connect   root@localhost on  using Socket
2017-08-14T09:33:20.671323Z     6 Query select @@version_comment limit 1
2017-08-14T09:33:22.964610Z     6 Query show variables like '%log%'
2017-08-14T09:33:24.574224Z     6 Quit  

成功しました.logにはSQLコマンドだけでなく、実行時間、Id、コマンドタイプなどの関連データも記録されています.
スロー・クエリー・ログ
スロークエリログSQL文が予め設定されたlong_を超える時間を記録query_timeの文は、データ量が大きい場合、遅いクエリー・ログに最適化する必要がある文を見ることができます.
1、スロークエリーログの構成
スロー・クエリー・ログの構成は、データベース・プロファイルmy.cnfで確認できます.
[root@localhost ~]# cat /etc/my.cnf | grep -E 'long|slow|not_using_indexes'
long_query_time = 1
#log-slow-queries = /var/log/mysql/slow.log
log_queries_not_using_indexes

次のように表示されます.long_query_time = 1とは、SQL文の実行時間が1 sを超えたことを意味し、それを記録する.log-slow-queries = /var/log/mysql/slow.logは、スロークエリログパスの設定である.log_queries_not_using_indexesはインデックスを使用しない文を意味し、記録の目標を縮小することができる
実際の構成は汎用クエリー・ログと同じで、mysqlインタフェースでコマンドを入力して遅いクエリー・ログを開きます.
    set slow_query_log = ON

2、クエリが成功したかどうか
[root@localhost ~]# cat /var/lib/mysql/localhost-slow.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument


成功しました.
ただし、slow_query_logは、ユーザー権限とパスワードに関連する文に記録される可能性がありますので、ログファイルの遅いクエリーを使用する場合は、ログの安全な保存に注意してください.