MySQL Server への接続および実行された SQL クエリを全て記憶する「一般クエリログ (General query log)」について本稿では解説します。 一般クエリログとは? 一般クエリログ (General query log) は、クライアントからの MySQL Server への接続・接続解除の情報、およびクライアントから実行された全ての SQL クエリを出力してくれるログです。 SQL 実行エラーが発生した際に、どのような SQL が実行されたのかを正確に把握するのに役に立ちます。 MySQL の初期状態では一般クエリログは出力されませんので、出力をさせたい場合には次で述べるような設定が必要です。 設定 一般クエリログを出力させるためには、設定ファイル my.cnf (Windows版を利用している場合には my.ini) に設定の追加が必要です。 [mysqld]
何がしたいの? 一般クエリとスロー クエリのログ出力先の選択 に記載の通り、log-output を TABLE にすれば、クエリログが mysql.general_log テーブルに保存されるようになります。 ログを SQL で検索できるようになるのでそれはそれは死ぬほど便利なんですが、ファイルではないので logrotate が行われません。 スロークエリはともかく、一般クエリログは膨大なサイズに成り得ますので、できれば自動で削減したいです。 が、簡単に調べたところ、mysql.general_log と mysql.slow_log は「log tables」と呼ばれるちょっと特別扱いなテーブルらしく、能動的な INSERT/UPDATE/DELETE 処理が一切行えず、TRUNCATE のみが可能なようです。 定期的に TRUNCATE してもいいんですが、それだと「ログを SQL
問題 実行したSQLをログに残しておくと、開発、デバッグのときに便利です。何か問題があったときやチューニングなどに、なにげに大活躍します。 そういうわけでSQLはログに残したいのですが、プログラム側で自力でログを残すのではなく、MySQLさんにログ保存をお願いできるでしょうか。 答え MySQLのログには、復旧等にも重要な役目のあるバイナリログという更新系のSQLのログ、遅いSQLを教えてくれるスローログ、エラーを教えてくれるエラーログなどのほかに、一般クエリログという、SELECE文なども含めてすべてのSQLを残せるログがある。 MySQL5.5(5.1でも同じでよいらしい)で一般クエリログを有効にするには、my.cnfの[mysqld]セクションで以下のように記述する。 log-output=TABLE general_log=1 スロークエリログも取るときはslow_query_lo
SNSやソーシャルゲーム、アドネットワークなどのシステムではいろいろなログ情報をDBに保存することもあると思います。 そのさい、日々増えつづけるデータやパフォーマンスをどの様にさばいていくかが重要になってきます。 今回はログ系のデータをMysqlでどのように運用していくか、をテーマにいくつかのノウハウをまとめました。 ログ系テーブルの特徴 ログ系のデータとは、つまり何かのアクションの履歴データのことです。 一般的にはこのような形になるかと思います。 CREATE TABLE `t_logs` ( `id` bigint(20) unsigned NOT NULL, `user_id` int(10) unsigned NOT NULL DEFAULT '0', `event_id` int(10) unsigned NOT NULL DEFAULT '0', `created` datet
MySQLのログファイル MySQLのログファイルは、実行エラーログ、クエリログ、スロークエリログ及びトランザクションログの4種類のログがあります。 実行エラーログ 実行エラーログは、起動、停止及び実行時のエラーがMySQLディレクトリに"ホスト名.err"というファイル名で保管されます。 MySQLで障害発生時に障害特定の情報を得ることが出来ます。 ・設定方法 1.コマンド UNIX、Linuxの場合 $ mysqld_safe --log-error=myerror.log --log-warnings=1 Windowsの場合 C\> mysqld-nt --log-error=myerror.log --log-warnings=1 オプション オプション 内容 --log-error[=filename] エラーログの出力先ファイル名を指定します。 --log-warnings[
MySQLのログファイルは、実行エラーログ・クエリログ・スロークエリログ・トランザクションログがあります。 ログファイルはMySQLデータディレクトリに格納されます。 [参考記事] MySQLでクエリーをログに記録する方法 実行エラーログ クエリログ スロークエリログ トランザクションログ MySQL起動コマンドから設定する方法と、設定ファイルで設定する方法があります。 起動コマンドからの設定の場合はMySQL停止まで有効で、設定ファイルの場合は設定削除後の再起動まで有効です。 ログファイルの格納先(保存先) ログファイルの格納先(保存先)は設定ファイルのdatadirディレクティブで設定されています。 UNIX、Linuxの場合 [mysql] datadir=/var/lib/mysql Windowsの場合 [mysql] datadir="C:/ProgramData/MySQL/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く