为了账号安全,请及时绑定邮箱和手机立即绑定

如何查看实时MySQL查询?

如何查看实时MySQL查询?

梵蒂冈之花 2019-11-21 10:38:52
我如何跟踪Linux服务器上发生的MySQL查询?例如,我希望设置某种侦听器,然后请求一个网页并查看引擎执行的所有查询,或者仅查看在生产服务器上运行的所有查询。我怎样才能做到这一点?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以非常轻松地将每个查询记录到日志文件中:


mysql> SHOW VARIABLES LIKE "general_log%";


+------------------+----------------------------+

| Variable_name    | Value                      |

+------------------+----------------------------+

| general_log      | OFF                        |

| general_log_file | /var/run/mysqld/mysqld.log |

+------------------+----------------------------+


mysql> SET GLOBAL general_log = 'ON';

进行查询(在任何数据库上)。Grep或其他检查/var/run/mysqld/mysqld.log


那别忘了


mysql> SET GLOBAL general_log = 'OFF';

否则性能将直线下降,您的磁盘将满!


查看完整回答
反对 回复 2019-11-21
?
GCT1015

TA贡献1827条经验 获得超4个赞

即使答案已经被接受,我还是想介绍一下可能是最简单的选择:


$ mysqladmin -u bob -p -i 1 processlist

这将每秒在屏幕上显示当前查询。


-u 您要执行命令的mysql用户

-p 提示您输入密码(因此您不必将其保存在文件中或将命令显示在命令历史记录中)

i 时间间隔(以秒为单位)。

使用该--verbose标志显示完整的进程列表,并显示每个进程的整个查询。(谢谢,nmat)

可能有一个缺点:如果快速查询在您设置的时间间隔之间运行,则可能不会显示。IE:我的间隔设置为一秒,如果有一个查询需要花费.02几秒钟来运行并且在间隔之间运行,您将看不到它。


当您想快速检查正在运行的查询而不必设置侦听器或其他任何内容时,最好使用此选项。


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 484 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信