_ all _ サーバーで最後に実行されたクエリを表示するためのクエリ/方法はありますか?
MySQL> = 5.1.12に恵まれている人のために、あなたは実行時にグローバルにこのオプションを制御することができます:
SET GLOBAL log_output = 'TABLE';
を実行するSET GLOBAL general_log = 'ON';
を実行するmysql.general_log
を見てください。テーブルではなくファイルに出力したい場合は、次のようにします。
SET GLOBAL log_output = "FILE";
デフォルト。SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
私は.cnfファイルを編集するよりもこの方法を好みます。
my.cnf
ファイルを編集しているのではなく、潜在的に永続的にログ記録を有効にしているのではない/var/log /var/data/log
/opt /home/mysql_savior/var
詳細については、 MySQL 5.1リファレンスマニュアル - サーバシステム変数 - general_log を参照してください。
一般的なクエリログを有効にすることができます そのような診断のために/。一般的に、本番サーバーにすべてのSELECTクエリを記録するわけではありませんが、パフォーマンスの低下を招きます。
MySQLの設定を編集します。 /etc/mysql/my.cnf - このような行を探す、または追加する
[mysqld]
log = /var/log/mysql/mysql.log
その変更を反映するためにmysqlを再起動してください。
tail -f /var/log/mysql/mysql.log
ちょっとプレスト、あなたは彼らが入ってくるようにクエリを見ることができます。
あなたはmysqlクエリログを監視するために流れることをすることができます。
Mysql設定ファイルmy.cnfを開く
Sudo nano /etc/mysql/my.cnf
[mysqld]
という見出しの下の次の行を検索し、これらの行のコメントを外してログを有効にします
general_log_file = /var/log/mysql/mysql.log
general_log = 1
Mysqlサーバーを再起動して変更を反映します
Sudo service mysql start
ターミナルで次のコマンドでmysqlサーバーログを監視します
tail -f /var/log/mysql/mysql.log
SELECT * FROM mysql.general_log WHERE command_type ='Query' LIMIT total;
1)一般的なmysqlロギングが有効になっている場合は、configで述べたことに基づいて、ログファイルまたはテーブル内のクエリをチェックできます。次のコマンドで有効になっているものを確認してください。
mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';
テーブルにクエリ履歴が必要な場合
Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
テーブルmysql.general_logを見てください。
ファイルに出力したい場合は、
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
2).mysql_historyファイルcat〜/ .mysql_historyでクエリを確認することもできます。
mysql binlog が有効になっている場合は、mysql binlogディレクトリを参照して、Linuxコンソールで次のコマンドを実行してユーザーが実行したコマンドを確認できます。
mysqlbinlog binlog.000001 > /tmp/statements.sql
有効にする
[mysqld]
log = /var/log/mysql/mysql.log
または一般的なログはMySQLのパフォーマンスに影響を与えます
たぶんあなたは query log を見ることによってそれを見つけることができました。
MySQLの設定を変更したくない場合は、 "Neor Profile SQL" http://www.profilesql.com のようなSQLプロファイラを使用できます。
あなたはLinuxで以下を見ることができます
cd /root
ls -al
vi .mysql_history
役に立ちます
ポールの答えを読んだ後、私は https://dev.mysql.com/doc/refman/5.7/en/query-log.html の詳細について掘り下げました。
私は人によって本当に便利なコードを見つけました。これがコンテキストの要約です。
(注:次のコードは私のものではありません)
このスクリプトはテーブルサイズを小さくするのに役立つテーブルをきれいに保つための例です。一日後のように、ログの約18万クエリがあるでしょう。 (ファイルでは、1日あたり30MBになります)
追加の列(event_unix)を追加する必要があり、それからログをきれいに保つためにこのスクリプトを使用することができます。 event_unixから...少し少々わかりにくいかもしれませんが、うまくいっています。
新しい列のコマンド:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
クリーンアップスクリプト:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
クレジットはSebastian Kaiser(コードの原作者)にあります。
誰かが私がそうしたようにそれが役に立つのを見つけることを願っています。