MySQL
ログファイル
サーチ…
リスト
- 一般的なログ - すべてのクエリ - VARIABLE general_logを参照
- 遅いログ - long_query_timeよりも遅いクエリ - slow_query_log_file
- Binlog - レプリケーションとバックアップ用 - log_bin_basename
- リレーログ - レプリケーション用
- 一般的なエラー - mysqld.err
- 開始/停止 - mysql.log(それほど面白くない) - log_error
- InnoDB REDOログ - iblog *
多くのログのデフォルトの場所は、変数basedir
とdatadir
を参照してください
いくつかのログは、他の変数によってオン/オフされます。いくつかはファイルまたはテーブルに書き込まれます。
(査読者への注:これは詳細と詳細な説明が必要です)
Documenters :Windowsと* nixの両方について、各ログタイプのデフォルトの場所と名前を含めてください。 (またはできるだけ多くの場合)
低速クエリログ
スロー・クエリー・ログは、 long_query_time
秒をlong_query_time
て終了するクエリーのログ・イベントで構成されます。例えば、完了までに最大10秒。現在設定されている時間のしきい値を確認するには、次のコマンドを発行します。
SELECT @@long_query_time;
+-------------------+
| @@long_query_time |
+-------------------+
| 10.000000 |
+-------------------+
これは、 my.cnf
またはmy.ini
ファイルmy.cnf
GLOBAL変数として設定できます。または、これは接続によって設定できますが、これは珍しいことです。値は0〜10(秒)の間で設定できます。どのような価値を使用する?
- 10は非常に役に立たないほど高いです。
- 2は妥協である。
- 0.5および他の画分が可能である。
- 0はすべてをキャプチャします。これは危険なほど高速にディスクをいっぱいにする可能性がありますが、非常に便利です。
低速問合せの取得は、オンまたはオフのいずれかで行われます。また、ログに記録されたファイルも指定されます。以下に、これらの概念を取り上げます。
SELECT @@slow_query_log; -- Is capture currently active? (1=On, 0=Off)
SELECT @@slow_query_log_file; -- filename for capture. Resides in datadir
SELECT @@datadir; -- to see current value of the location for capture file
SET GLOBAL slow_query_log=0; -- Turn Off
-- make a backup of the Slow Query Log capture file. Then delete it.
SET GLOBAL slow_query_log=1; -- Turn it back On (new empty file is created)
詳細については、MySQLのマニュアルページのSlow Query Logを参照してください。
注:slowlogのオン/オフに関する上記の情報は、5.6(?)で変更されました。古いバージョンには別の仕組みがありました。
何があなたのシステムを遅くしているかを見るための「最良の」方法:
long_query_time=...
turn on the slowlog
run for a few hours
turn off the slowlog (or raise the cutoff)
run pt-query-digest to find the 'worst' couple of queries. Or mysqldumpslow -s t
一般的なクエリログ
General Query Logには、クライアントの接続、切断、およびクエリからの一般的な情報のリストが含まれています。これはデバッグにとって非常に重要ですが、それはパフォーマンス(引用?)の妨げになります。
一般的なクエリログの例を以下に示します。
一般ログが現在キャプチャされているかどうかを確認するには:
SELECT @@general_log; -- 1 = Capture is active; 0 = It is not.
キャプチャファイルのファイル名を確認するには:
SELECT @@general_log_file; -- Full path to capture file
ファイルのフルパスが表示されない場合、ファイルが存在する中でdatadir
。
Windowsの例:
+----------------------------------------------------------+
| @@general_log_file |
+----------------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Data\GuySmiley.log |
+----------------------------------------------------------+
Linux:
+-----------------------------------+
| @@general_log_file |
+-----------------------------------+
| /var/lib/mysql/ip-ww-xx-yy-zz.log |
+-----------------------------------+
general_log_file
GLOBAL変数が変更されると、新しいログがdatadir
保存されます。ただし、変数を調べることでフルパスが反映されなくなることがあります。
設定ファイルのgeneral_log_file
にエントリがない場合、デフォルトではdatadir
@@hostname
.logになりdatadir
。
キャプチャをオフにするのがベストプラクティスです。キャプチャの開始日時と終了日時を反映したファイル名を持つバックアップディレクトリにログファイルを保存します。以前のファイルを削除するのは、そのファイルのファイルシステムの移動が発生していない場合です。ログファイルの新しいファイル名を設定し、キャプチャをオンにします(下記参照)。ベストプラクティスには、現時点でキャプチャしたい場合でも慎重な判断が含まれます。通常、キャプチャはデバッグの目的でのみオンになっています。
バックアップされたログの典型的なファイルシステムファイル名は次のようになります。
/LogBackup/GeneralLog_20160802_1520_to_20160802_1815.log
ここで、日付と時刻は範囲としてのファイル名の一部です。
Windowsの場合、設定を変更して次の順序に注意してください。
SELECT @@general_log; -- 0. Not being captured
SELECT @@general_log_file; -- C:\ProgramData\MySQL\MySQL Server 5.6\Data\GuySmiley.log
SELECT @@datadir; -- C:\ProgramData\MySQL\MySQL Server 5.7\Data\
SET GLOBAL general_log_file='GeneralLogBegin_20160803_1420.log'; -- datetime clue
SET GLOBAL general_log=1; -- Turns on actual log capture. File is created under `datadir`
SET GLOBAL general_log=0; -- Turn logging off
Linuxも同様です。これらは動的な変化を表します。サーバを再起動すると、設定ファイルの設定が反映されます。
設定ファイルについては、以下の関連する変数の設定を考慮してください。
[mysqld]
general_log_file = /path/to/currentquery.log
general_log = 1
さらに、変数log_output
は、 FILE
だけでなく、 TABLE
出力用に構成することもできます。そのために、 目的地をご覧ください。
MySQLのマニュアルページの一般クエリログを参照してください。
エラーログ
エラー・ログには、開始および停止情報、およびサーバーが遭遇した重要なイベントが入力されます。
その内容の例は次のとおりです。
変数log_error
は、エラー・ロギングのためのログ・ファイルへのパスが格納されます。
log_error
設定ファイルエントリがない場合、システムはその値をdatadir
@@hostname
datadir
デフォルト設定します。 log_error
は動的変数ではないことに注意してください。したがって、変更はcnfまたはiniファイルの変更とサーバーの再起動(または、ここではマニュアルページのリンクの「エラーログファイルのフラッシュと名前の変更」を参照)によって行われます。
エラーの場合、ロギングを無効にすることはできません。問題をトラブルシューティングする際にはシステムの健全性にとって重要です。また、エントリは一般クエリログと比較してまれです。
GLOBAL変数log_warnings
は、サーバのバージョンによって異なる冗長レベルを設定します。次のスニペットでは、
SELECT @@log_warnings; -- make a note of your prior setting
SET GLOBAL log_warnings=2; -- setting above 1 increases output (see server version)
上記のlog_warnings
は動的変数です。
cnf
ファイルとini
ファイルの構成ファイルの変更は、次のようになります。
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
MySQL 5.7.2では、警告レベルの冗長性を3に拡張し、GLOBAL log_error_verbosity
を追加しました。再び、それは5.7.2で導入されました。動的に設定したり、変数としてチェックしたり、 cnf
やini
設定ファイルの設定でチェックすることができます。
MySQL 5.7.2現在:
[mysqld]
log_error = /path/to/CurrentError.log
log_warnings = 2
log_error_verbosity = 3
題しMySQLのマニュアルページを参照してくださいエラーログ 、特にフラッシングのためにと、エラーログファイルの名前の変更、およびに関連するバージョンとのエラーログ詳細度セクション log_warnings
とerror_log_verbosity
。