この短くてわかりやすいガイドでは、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%";
それでおしまい。ここから、sudo tail -f
と同様のことができます。 general-query.log
にあります コマンドラインからファイルを作成し、物事を監視します。
検査が完了したら、次のようにMySQL/MariaDBクエリログを無効にできます。
SET GLOBAL general_log = 0;
本番サーバーでのロギングをオンにすることは確かに望ましくありません。したがって、これには注意してください。ログファイルはかなり速く大きくなる可能性があります。
クエリを直接実行したくない場合でも、MySQL / MariaDB構成ファイルを直接変更することで、MySQL / MariaDBクエリログを有効にできますが、このアプローチではデータベースサーバーを再起動する必要があることに注意してください。
結論
一般的なMySQL/MariaDBクエリログは、クライアントでエラーが疑われ、クライアントがデータベースに何を送信したかを正確に知りたい場合に非常に役立ちます。したがって、データベースにバグや問題がある場合は、このログをオンにして問題を追跡し、何が起こっているかを確認する方法の1つです。
一般的なMySQL/MariaDBクエリログの有効化について詳しくは、こちらとこちらをご覧ください。