如何显示在MySQL上执行的最后一个查询?
是否有任何查询/方式显示在所有服务器上执行的最后一个查询?
对于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
嘿presto,你可以看他们进来的查询。
你可以做流动的事情来监视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日志记录,那么我们可以根据我们在配置中提到的内容来检查日志文件或表中的查询。 使用以下命令检查启用了什么
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 ,可以通过在linux控制台中执行以下命令,通过浏览到mysql binlog目录来检查用户运行的命令
mysqlbinlog binlog.000001 > /tmp/statements.sql
启用
[mysqld] log = /var/log/mysql/mysql.log
或者一般日志会影响mysql的性能
你可以看看下面的Linux
cd /root ls -al
vi .mysql_history
它可能有帮助
如果你不想改变你的MySQL配置,你可以使用SQL Profiler,比如“Neor Profile SQL” http://www.profilesql.com 。