MySQLクライアントのログ機能を徹底解説!履歴ファイルとsyslogの基本
MySQLクライアントのロギングとは
MySQLのmysqlクライアントは、実行されたステートメントに対してさまざまな種類のロギングを行うことができます。ロギングの動作は、対話形式で実行した場合と、それ以外の場合で異なります。ここでは、プラットフォームごとのロギングの挙動と、その仕組みについて詳しく解説します。
UNIXでのロギング
UNIX環境では、mysqlは実行したステートメントを履歴ファイルに書き込みます。デフォルトでは、このファイルはユーザーのホームディレクトリ内の「.mysql_history」という名前で保存されます。
別のファイル名を指定したい場合は、環境変数「MYSQL_HISTFILE」に任意のファイルパスを設定してください。
また、「--syslog」オプションを指定すると、mysqlはすべてのプラットフォームでステートメントをシステムのロギング機能に書き込みます。UNIXでは、このシステムロギング機能は「syslog」として知られています。
Windowsでのロギング
Windows環境では、システムロギング機能は「Windowsイベントログ」と呼ばれます。ログメッセージが出力される宛先は、システムによって異なります。たとえば、Linuxの場合、宛先は通常「/var/log/messages」ファイルです。
ロギングの仕組み
有効化されているロギングの宛先ごとに、ステートメントのロギングは以下のルールに従って行われます。
1. 対話的な実行のみが記録対象
ステートメントがログに記録されるのは、対話的に実行された場合のみです。ファイルやパイプから読み込まれたステートメントは「非対話的」とみなされます。「--batch」または「--execute」オプションを使用すると、ステートメントのロギングを抑制することができます。
2. 除外リストに一致するステートメントは無視
「ignore」リストに含まれるパターンに一致するステートメントは無視され、ログには記録されません。
3. 空行以外は個別に記録
mysqlは、除外対象外の空でないステートメント行を、それぞれ個別にログに記録します。
4. 複数行ステートメントの連結
除外対象外のステートメントが複数行にわたっており、終端のデリミタが含まれていない場合、mysqlはそれらの行を連結して完全なステートメントを形成します。この際、改行はスペースに変換され、デリミタとともに結果がログに記録されます。
まとめ
mysqlクライアントのロギング機能を理解することで、実行したSQLステートメントの追跡や監査が容易になります。履歴ファイルの保存先を変更したい場合は「MYSQL_HISTFILE」環境変数を、システムログへの記録が必要な場合は「--syslog」オプションを活用しましょう。
-
Windows用MySQLコマンドラインクライアントのインストール方法
MySQLコマンドラインクライアントとはMySQLコマンドラインクライアントは、コマンド操作でデータベースを管理できる便利なツールです。Windows環境で利用するには、公式サイトからMySQL本体をダウンロードし、インストールする必要があります。MySQL公式ダウンロードページへアクセスまず、以下のURLにアクセスしてMySQLの公式ダウンロードページを開きましょう。https://dev.mysql.com/downloads/mysql/アクセスすると、次のようなダウンロード画面が表示されます。オペレーティングシステムの選択ダウンロードページが開いたら、次に使用しているオペレーティングシ
-
MySQLでスロークエリログを設定する方法|遅いクエリの原因を特定する手順
本番環境のMySQLサーバーを運用・管理していると、データベースの動作が突然遅くなることがあります。原因となっているクエリを特定するのは容易ではなく、かなりの時間を要する作業になりがちです。そんなときに役立つのが、MySQLに標準搭載されている「スロークエリログ」機能です。 スロークエリログとは スロークエリログとは、指定した実行時間を超えたクエリを自動的に記録する機能です。このログを有効にしておけば、データベースサーバーの動作が通常より遅いと感じたときに、ログファイルをテキストエディタで開くだけで、どのクエリがボトルネックになっているのかをすぐに確認できます。 my.cnfでスロークエリ