Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
9年以上前投稿 修正あり

色んなログ、読む時間のある人いる? MariaDBのログ概要

MariaDBプロジェクトの創設者Monty氏による、MariaDBおよびMySQLの各種ログの概要と設定についてのまとめ。

原文
Monty says: Logs and more logs, who has time to read them ? (English)
翻訳依頼者
D98ee74ffe0fafbdc83b23907dda3665
翻訳者
D98ee74ffe0fafbdc83b23907dda3665 doublemarket
原著者への翻訳報告
未報告


MariaDB 10.1の新機能を触っている時、(馬鹿げていると思うことの1つだが)一般ユーザはスロークエリログを無効にする方法が分からないのではないかと気づいた。

この機能を実装したりドキュメントを書いていて、色々なログの情報がバラバラになっていて、それらを有効にしたり無効にするのが意外と難しいのではないかとも思った。

これを解決するため、MariaDBのドキュメント(KB)に、MariaDBにもMySQLにも役立つだろうと思って「Overview of the MariaDB logs」というエントリを作った。

そのコピーがこの記事だ。コメントや追加して欲しい内容があれば、KBのエントリの方に意見を寄せて欲しい。たくさんの人の役に立つようにね!

MariaDBログの概要

MariaDBには、何をログに出すか、いつログに出すかを定義する、たくさんの変数がある。

この記事では、さまざまなログの概要を述べ、どのようにログを有効・無効にするかを説明する。

エラーログ

  • 常に有効
  • 基本的にはデータディレクトリ内のファイルに記録されるが、ディストリビューションによっては場所が変わっていることがある
  • 全ての致命的エラーはここに記録される
  • log_warningsを設定することで、警告レベルのログも記録できる
  • mysqld_safeの--syslogオプションで、システムのsyslogにもメッセージを出すことができる

一般クエリログ

  • --general-logで有効にできる
  • ファイルあるいはテーブルに全てのクエリを保存できる
  • クエリのデバッグや監査用途に便利
  • super権限のあるユーザは、SQL_LOG_OFFを1にすることで、コネクション単位でログを無効にできる

スロークエリログ

バイナリログ

  • --log-binを付けてmysqldを起動すると有効になる
  • 基本的には、レプリケーションのマスタになるマシンで有効にする
  • 主にレプリケーションのために使われ、--binlog-ignore-db=database_name--binlog-do-db=database_nameを指定することもできる
  • super権限のあるユーザは、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では、--skip-log-queriesを付ければ自動で無効になる。

参考

次の記事
innodb_large_prefixを使ってERROR 1071を回避する
前の記事
MariaDB: バイナリログイベントの選択的スキップ

Feed small 記事フィード

新着記事Twitterアカウント