MariaDBのログの概要
MariaDBには、何を、いつログに出すかを定義するための変数が数多くあります。
この記事では、さまざまなログの概要を述べ、どのようにログを有効・無効にするかを説明します。
ストレージエンジンも独自のログを持っていることがあるのに注意しましょう。例えばInnoDBは、ロールバックやクラッシュリカバリに使うための、UndoログやRedoログを保持します。このページでは、MariaDBサーバのログのみを取り上げます。
エラーログ
- 常に有効
- 基本的にはデータディレクトリ内のファイルに記録されますが、ディストリビューションによっては場所が変わっていることがあります
- 全ての致命的エラーはここに記録されます
- log_warningsを設定することで、警告レベルのログも記録できます
- mysqld_safeの
--syslog
オプションで、システムのsyslogにもメッセージを出すことができます
通常のクエリログ
- --general-logで有効にできます
- ファイルあるいはテーブルに全てのクエリを保存できます
- クエリのデバッグや監査用途に便利
- super権限のあるユーザは、SQL_LOG_OFFを1にすることで、コネクション単位でログを無効にできます
スロークエリログ
- --slow-query-logを付けてmysqldを起動すると有効になります
- ファイルあるいはテーブルに全てのクエリを保存できます
- パフォーマンス問題の原因になっているクエリを見つけるのに便利
- long_query_time以上かかっているクエリをすべて保存します
- --log-slow-admin-statements、--log-slow-slave-statements、log_slow_filter 、log_slow_rate_limitの各オプションで、何をログするかを設定できます
- log_slow_verbosityで、どのレベルを記録するかを変更できます
- global.slow_query_logを0に設定すると、システム全体で無効にできます
- 10.1では、local.slow_query_logを0に設定すると、コネクション単位で無効にできます
バイナリログ
- --log-binを付けてmysqldを起動すると有効になります
- 基本的には、レプリケーションのマスタになるマシンで有効にします
- 主にレプリケーションのために使われ、mysqlbinlogによって、バックアップからの復旧時にデータベースを最新にするのにも使います
- なにをログに記録するかを指定するのに、--binlog-ignore-db=database_nameや--binlog-do-db=database_nameを指定することもできます
- super権限のあるユーザは、 setting SQL_LOG_BINを0にすることで、コネクション単位でログを無効にできます。これが0だと、そのコネクションで行われた変更はスレーブに複製されません。
- Using and Maintaining the Binary Logに例があります
例
これから実行するクエリが遅いことが既知で、スロークエリログに記録したくない場合は下記を実行
SET LOCAL SLOW_QUERY_LOG=0;
super権限のあるユーザでバッチジョブを実行していて、そのクエリを記録したくない場合(例えばmysqldumpを実行するなど)は下記を実行
SET LOCAL SQL_LOG_OFF=1, LOCAL SLOW_QUERY_LOG=0;
MariaDB 10.1のmysqldumpでは、--disable-log-querys
を付ければ自動で無効になります。
参考
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.