MySQL 8.
以前の第155回では、エラーログのフィルタリングに焦点を当て、ログイベントのフィルタリングに特化したコンポーネントの概要を紹介しました。今回は、その続編として
エラーログ出力形式の確認
現在設定しているエラーログコンポーネントは、log_
mysql> SELECT @@log_error_services; +----------------------------------------+ | @@log_error_services | +----------------------------------------+ | log_filter_internal; log_sink_internal | +----------------------------------------+ 1 row in set (0.00 sec)
ここでは、log_
はエラーログフィルターコンポーネント部分で、log_
がエラーログシンクコンポーネントになります。
また、バージョン8.
詳細については、こちらのワークログ
エラーログ設定方法
エラーログの設定には、設定ファイル
この記事ではログ出力をJSON形式に変更するために、log_
暗黙的な方法での設定
暗黙的な設定方法のやり方ではmy.
[mysqld]
log_error_services='log_filter_internal; log_sink_json'
必要であれば、SET PERSISTを使ってlog_
SET PERSIST log_error_services = 'log_filter_internal; log_sink_json';
log_sinkの組み合わせ
エラーログシンクコンポーネントは、1つだけでなく複数を組み合わせて使用することが可能です。たとえば、デフォルトのlog_
mysql> SET PERSIST log_error_services = 'log_filter_internal; log_sink_internal; log_sink_json';
log_timestamps
エラーログに関連するシステム変数としてlog_
許可される値はUTC (デフォルト) とSYSTEM (ローカルシステムのタイムゾーン) となっています。
エラーログシンクコンポーネント
ここでは関連するエラーログシンクコンポーネントを紹介します。
log_sink_internal
log_time thread [label] [err_
の形式で表示されます。ここで、[label]
にはログレベルが含まれ、log_
2024-04-02T19:50:50.644588+09:00 0 [Note] [MY-011025] [Repl] Failed to start replica threads for channel ''.
2024-04-02T19:50:50.647810+09:00 0 [Note] [MY-011240] [Server] Plugin mysqlx reported: 'Using SSL configuration from MySQL Server'
2024-04-02T19:50:50.648018+09:00 5 [Note] [MY-010051] [Server] Event Scheduler: scheduler thread started with id 5
2024-04-02T19:50:50.651829+09:00 0 [Note] [MY-011243] [Server] Plugin mysqlx reported: 'Using OpenSSL for TLS connections'
2024-04-02T19:50:50.652031+09:00 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /tmp/mysqlx.sock
log_sink_syseventlog
log_
このエラーログコンポーネントに関連するシステム変数は3つあります。
- syseventlog.
facility - syslogのファシリティを指定します。デフォルトはdaemonになっています。
- syseventlog.
include_ pid - 出力時にプロセスIDを含めるかどうかを指定します。
- syseventlog.
tag - syslogに出力するときにタグを設定できます。デフォルトは空文字で、設定すると先頭にハイフンが付いたタグが追加されます。
mysql> SELECT @@syseventlog.tag, @@syseventlog.facility, @@syseventlog.include_pid; +-------------------+------------------------+---------------------------+ | @@syseventlog.tag | @@syseventlog.facility | @@syseventlog.include_pid | +-------------------+------------------------+---------------------------+ | | daemon | 1 | +-------------------+------------------------+---------------------------+ 1 row in set (0.00 sec)
log_sink_json
log_log_
にあるファイル名に番号.json
をつけたファイルに出力されます。出力内容はlog_
まとめ
今回はMySQLのエラーログに関連する重要な機能の1つ、エラーログシンクコンポーネントに焦点を当てました。この機能を活用することで、ログ出力をJSON形式やsyslogに統一し、他のシステムとの連携を容易にすることが可能です。日常的に設定を変更することは少ないかもしれませんが、このような柔軟性があることを知っておくことは大切です。
エラーログシンクコンポーネントの詳細については、MySQLの公式ドキュメントにて詳しく解説されていますので、設定時にはぜひ参考にしてみてください。