MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  優先度ベースのエラーログのフィルタリング (log_filter_internal)

5.4.2.5 優先度ベースのエラーログのフィルタリング (log_filter_internal)

log_filter_internal ログフィルタコンポーネントは、エラーイベントの優先度およびエラーコードに基づいた単純な形式のログフィルタリングを実装します。 log_filter_internal がエラーログ用のエラー、警告および情報イベントを許可または抑制する方法に影響を与えるには、log_error_verbosity および log_error_suppression_list システム変数を設定します。

log_filter_internal は組込みで、デフォルトで有効になっています。 このフィルタが無効になっている場合、log_error_verbosity および log_error_suppression_list は効果がないため、必要に応じて、かわりに別のフィルタサービスを使用してフィルタリングを実行する必要があります (たとえば、log_filter_dragnet を使用している場合は個々のフィルタルールを使用します)。 フィルタ構成の詳細は、セクション5.4.2.1「エラーログ構成」 を参照してください。

冗長性フィルタリング

エラーログを対象としたイベントの優先度は、ERRORWARNING または INFORMATION です。 log_error_verbosity システム変数は、次のテーブルに示すように、ログに書き込まれるメッセージに対して許可する優先度に基づいて冗長性を制御します。

log_error_verbosity 値 許可されたメッセージの優先度
1 ERROR
2 ERROR, WARNING
3 ERROR, WARNING, INFORMATION

log_error_verbosity が 2 以上の場合、サーバーはステートメントベースのロギングに安全でないステートメントに関するメッセージをログに記録します。 値が 3 の場合、サーバーは中断された接続および新しい接続試行のアクセス拒否エラーをログに記録します。 セクションB.3.2.9「通信エラーおよび中止された接続」を参照してください。

レプリケーションを使用する場合は、ネットワーク障害や再接続に関するメッセージなど、発生していることに関する詳細情報を取得するために、2 以上の log_error_verbosity 値をお薦めします。

レプリカで log_error_verbosity が 2 以上の場合、レプリカはエラーログにメッセージを出力して、ジョブを開始するバイナリログおよびリレーログ座標、別のリレーログへの切替え時、切断後の再接続時など、そのステータスに関する情報を提供します。

冗長性フィルタリングの対象ではない SYSTEM のメッセージ優先度もあります。 log_error_verbosity の値に関係なく、エラー以外の状況に関するシステムメッセージがエラーログに出力されます。 これらのメッセージには、起動メッセージと停止メッセージ、および設定に対する重要な変更が含まれます。

MySQL エラーログでは、システムメッセージに System というラベルが付けられます。 他のログシンクは同じ規則に従っている場合と従っていない場合があり、結果のログでは、「ノート」「情報」などの情報優先度レベルに使用されるラベルがシステムメッセージに割り当てられる場合があります。 メッセージのラベル付けに基づいてロギングに追加のフィルタリングまたはリダイレクトを適用した場合、システムメッセージはフィルタをオーバーライドしませんが、他のメッセージと同じ方法で処理されます。

抑制リストのフィルタリング

log_error_suppression_list システム変数は、エラーログを対象としたイベントに適用され、WARNING または INFORMATION の優先度で発生した場合に抑制するイベントを指定します。 たとえば、特定のタイプの警告が頻繁に発生するが関心がないためにエラーログで望ましくない「ノイズ」とみなされる場合は、抑止できます。log_error_suppression_list では、優先度が ERROR または SYSTEM のメッセージは抑制されません。

log_error_suppression_list 値には、抑制しない場合は空の文字列、抑制するエラーコードを示すカンマ区切り値のリストを指定できます。 エラーコードはシンボリックまたは数値形式で指定できます。 数値コードは、MY- 接頭辞の有無にかかわらず指定できます。 数値部分の先頭のゼロは重要ではありません。 許可されているコード形式の例:

ER_SERVER_SHUTDOWN_COMPLETE
MY-000031
000031
MY-31
31

読みやすく移植性を高めるために、シンボリック値は数値よりも優先されます。

抑制されるコードはシンボリックまたは数値形式で表現できますが、各コードの数値は許可された範囲内である必要があります:

  • 1 から 999: サーバーおよびクライアントによって使用されるグローバルエラーコード。

  • 10000 以上: エラーログに書き込まれるサーバーエラーコード (クライアントには送信されません)。

また、指定した各エラーコードは、実際には MySQL で使用する必要があります。 許可された範囲内または許可された範囲内にないが、MySQL で使用されていないコードを指定しようとすると、エラーが発生し、log_error_suppression_list 値は変更されません。

エラーコードの範囲と、各範囲内で定義されているエラー記号および番号の詳細は、セクションB.1「エラーメッセージのソースと要素」 および MySQL 8.0 Error Message Reference を参照してください。

サーバーは、特定のエラーコードのメッセージを異なる優先度で生成できるため、log_error_suppression_list にリストされているエラーコードに関連付けられたメッセージの抑制は、その優先度に依存します。 変数の値が'ER_PARSER_TRACE,MY-010001,10002'であるとします。 log_error_suppression_list は、これらのコードのメッセージに次の影響を与えます:

  • WARNING または INFORMATION の優先度で生成されたメッセージは抑制されます。

  • ERROR または SYSTEM の優先度で生成されたメッセージは抑制されません。

冗長性と抑制リストの相互作用

log_error_verbosity の効果は、log_error_suppression_list の効果と結合されます。 次の設定でサーバーを起動したとします:

[mysqld]
log_error_verbosity=2     # error and warning messages only
log_error_suppression_list='ER_PARSER_TRACE,MY-010001,10002'

この場合、log_error_verbosity では、優先度が ERROR または WARNING のメッセージが許可され、優先度が INFORMATION のメッセージが破棄されます。 破棄されないメッセージのうち、log_error_suppression_list は、優先度が WARNING のメッセージおよび指定されたエラーコードを破棄します。

注記

例に示されている log_error_verbosity 値 2 もデフォルト値であるため、この変数の INFORMATION メッセージへの影響は、明示的な設定なしで、デフォルトで説明されているとおりです。 log_error_suppression_listINFORMATION 優先度のメッセージに影響を与えるようにするには、log_error_verbosity を 3 に設定する必要があります。

次の設定でサーバーが起動したとします:

[mysqld]
log_error_verbosity=1     # error messages only

この場合、log_error_verbosity では優先度が ERROR のメッセージが許可され、優先度が WARNING または INFORMATION のメッセージが破棄されます。 抑制される可能性のあるすべてのエラーコードが log_error_verbosity 設定のためにすでに破棄されているため、log_error_suppression_list の設定は効果がありません。


関連キーワード:  メッセージ, サーバー, 優先, 変数, verbosity, ログ, 抑制, suppression, list, 接続