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を付ければ自動で無効になります。 参考 MariaDB監査プラグイン ↑ ログファイル ↑