0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【MySQL学習】エラーログ

Last updated at Posted at 2022-07-23

はじめに

MySQLのエラーログについて学習したことを簡単にまとめます。

検証に使用した環境

DB:MySQL8.0

エラーログとは

MySQL上で検知したエラーがロギングされます。
エラーログでは、サーバーの実行中に発生したエラーだけでなく、
起動・停止中も含み、エラー、警告、またノートなどの診断メッセージも出力されます。

コンポーネント

エラーログでは、MySQLのコンポーネントアーキテクチャを使用しています。
そのため、コンポーネントを選択して任意の構成にすることができます。

コンポーネントには、以下の2つの種類から複数存在します。
・ログイベントのフィルタリングするコンポーネント(フィルタ)
・フィルタリング結果を書込むコンポーネント(シンク)

フィルタ

エラーログイベントをフィルタリングをするコンポーネントです。
イベントフィールドを追加、削除または変更したり、イベント全体を削除して実現しています。
結果のイベントは、有効なコンポーネントのリスト内の次のログコンポーネントに渡されます。

シンク

ログイベントの宛先 (ライター) です。
通常、シンクはログイベントを特定の形式のログメッセージに処理し、ファイルやシステムログなどに書き込みます。
シンクは、パフォーマンススキーマのerror_logテーブルに書き込むこともできます。

コンポーネントベースによるメリット

・ログイベントをフィルタし、ロギングする内容を絞れます
・複数のシンクコンポーネントを有効にし、複数のログに出力できます
・デフォルトのエラーログ形式も組込みフィルタとシンクコンポーネントを組み合せて実装されています
・シンクを変更、または追加して、JSON形式の出力が可能
・シンクを変更、または追加して、システムログにも出力できます

システム変数

log-error

ログファイルの出力先を指定します。
指定されていない場合、デフォルトはコンソールに出力されます。
また、ファイル名を指定しなかった場合、「host_name」.errとなります。

log_error_services

有効にするコンポーネントを制御します。
変数には、セミコロンまたはカンマで区切りのリスト形式で複数のコンポーネントを指定することができます。
※サーバーはリストで指定した順番にコンポーネントを実行するため、コンポーネントの指定順は重要

log_error_verbosity

冗長性フィルタリングといって、ロギングする内容を3段階で指定します。

設定値は1〜3を指定します。
1: ERROR
2: ERROR, WARNING
3: ERROR, WARNING, INFORMATION

2以上を指定すると、安全でないステートメントに関するメッセージがロギングされ、
3を指定すると、接続の中断や、接続のアクセス拒否エラーもロギングされるようになります。
そのため、レプリケーションを使用している場合は2以上を設定することが推奨されています。

また、中には冗長性フィルタリングの対象外となるSYSTEMのメッセージもあり、「System」というラベルが付けられてロギングされます。
※シンクによって差異あり。

log_error_suppression_list

WARNINGまたはINFORMATIONの優先度で発生したイベントで抑制したいもののエラーコードをリスト形式で指定します。
これにより、よく出力されるが関心がない警告などの出力を抑制できます。
※優先度がERRORまたはSYSTEMのメッセージは抑制できません。

デフォルトの構成

下記の通り、デフォルトではフィルタに「log_filter_internal」、シンクに「log_sink_internal」が指定されています。

mysql> SELECT @@GLOBAL.log_error_services;
+----------------------------------------+
| @@GLOBAL.log_error_services            |
+----------------------------------------+
| log_filter_internal; log_sink_internal |
+----------------------------------------+
1 row in set (0.01 sec)

テーブル出力

MySQL8.0.22以降で、かつシンクにlog_sink_internal、log_sink_jsonを使用している場合、
パフォーマンススキーマのerror_logテーブルにもされます。

参考文献

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?