ウェブサイト検索

MySQL/MariaDB クエリログを有効にする方法


この短くてわかりやすいガイドでは、MySQL/MariaDB クエリのログを有効にしてクエリをファイルに保存する方法について説明します。

データベースを使用するとき、開発者は、トラブルシューティング、パフォーマンスの調整、純粋な好奇心など、舞台裏で何が起こっているのかを知りたいと思うことがよくあります。

一般的なクエリ ログは、依然として MySQL/MariaDB データベースで最も一般的な監査および診断情報ソースの 1 つです。ログ記録が有効になると、データベース サーバーはクライアントの接続または切断時に情報をログ ファイルに書き込み、各 SQL ステートメントを記録します。

ただし、一般的なクエリ ログを有効にすると、MySQL/MariaDB のパフォーマンスに影響することに注意してください。これにより、スループットが約 13% 減少し、MySQL/MariaDB サーバーからの応答時間が約 17% 増加します。

プロセスは非常に簡単なので、さっそく始めましょう。

MySQL/MariaDB の一般的なクエリのログを有効にする

MySQL/MariaDB では、一般的なクエリ ログはデフォルトで無効になっています。

1. MySQL/MariaDB サーバーのコマンドライン ツールに root として入力します。

mysql -u root -p

2. 以下のクエリを実行して、一般ログ ファイルのパスを /var/logs/mysql/general-query.log に設定します。

SET GLOBAL general_log_file='/var/log/mysql/general-query.log';

一般的なクエリ ログは、データベース サブディレクトリを保持する同じデータ ディレクトリ (通常は /var/lib/mysql) に書き込まれ、ログ ファイル名はデフォルトでホスト名になります。ただし、ご覧のとおり、これは変更できます。

3. サーバーの一般ログを有効にします。

SET GLOBAL general_log = 1;

MySQL/MariaDB の一般的なクエリ ログのステータスをもう一度確認してみましょう。

SHOW VARIABLES LIKE "general_log%";

それでおしまい。コマンドラインから general-query.log ファイルに対して sudo tail -f と同様の操作を実行して、状況を監視できます。

関連: Linux の先頭コマンドと末尾コマンドを例で説明する

検査が完了したら、次のようにして MySQL/MariaDB クエリのログを無効にできます。

SET GLOBAL general_log = 0;

運用サーバーでログを有効にすることは確かに望ましくありません。したがって、これには注意してください。ログ ファイルはすぐに大きくなる可能性があります。

クエリを直接実行したくないとします。その場合でも、MySQL/MariaDB 構成ファイルを直接変更することで MySQL/MariaDB クエリ ログを有効にすることができますが、この方法ではデータベース サーバーの再起動が必要になることに注意してください。

結論

クライアントのエラーが疑われ、クライアントがデータベースに何を送信したかを正確に知りたい場合は、一般的な MySQL/MariaDB クエリ ログが役立つことがあります。

したがって、データベースに問題がある場合、それをトラブルシューティングする 1 つの方法は、クエリ ログを有効にして何が起こっているかを観察することです。

一般的な MySQL/MariaDB クエリ ログの有効化について詳しくは、こことここを参照してください。

関連記事: