如何利用 mysql 的慢查询功能,对未知系统进行分析
发布于 作者:苏南大叔 来源:程序如此灵动~mysql
默认情况下,是无法查看在系统运行过程中,都执行了什么sql的。有个查询当前sql
的功能,不过那个稍纵即逝。根本无法捕获有用信息。(sqlserver
是有这个功能的,企业管理器里面就可以查看)而我们在分析一个新的系统的时候。就需要对其所有的sql
都记录下来。怎么操作呢?跟着苏南大叔做就行了。
话说碰到一个新的未知代码的时候,对系统进行分析是件非常痛苦的事情。那么今天苏南大叔带给大家的就是,如何利用mysql
的sql
慢查询的日志功能,对未知系统进行分析。前提是,这个系统用了mysql
数据库。
mysql
设置
命令行下面,进入mysql
。输入下面的关键sql
语句。就可以看到当前的相关设置。
show variables like "slow_query_log";
show variables like "log_queries_not_using_indexes";
show variables like "long_query_time";
show variables like "slow_query_log_file";
我们需要开启前两个项目,然后设置『慢』sql
的『慢』标准。至于,log
文件的位置是slow_query_log_file
,大家记下设定值就好了,不必设置,后面的步骤里面,苏南大叔会用的到这个log
文件的位置路径值。
set global slow_query_log=on;
set global log_queries_not_using_indexes=on;
set global long_query_time=0;
注意:这里的小技巧。把long_query_time
设置为0
,就是大于0
的sql
查询都认为是『慢』查询,这样的话,就记录下所有的sql
了。
查看效果
运行你要分析的功能,然后查看对应的log
日志就可以了。苏南大叔是在mac
下面分析的piwik
,所以,操作就是:触发piwik
的相关功能,然后使用tail
命令查看的日志输出。
注意:tail
并不是mysql
里面的功能,所以,这里需要再开一个终端(非mysql
命令行),来执行这个命令。或者在当前mysql的命令行下面,执行exit退出即可。
tail -f /usr/local/var/mysql/localhost-slow.log
注意:log日志的路径来自最开始的第四条查询的输出。请根据你的实际情况进行替换。
上述设置后,瞬间就得到了,piwik
如何记录一条新的访问记录的所有逻辑。是不是非常简单明了?至于,苏南大叔是怎样把本地的piwik『放到』别人的网页里面的。请查看这里:
结语
上述设置,是在当前操作环境下生效的。如果你重启了mysql
,上述设置就消失了。对于如何固化这些设置。请点击这里查看:
欢迎关注苏南大叔给大家带来的mysql系列文章,详情请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。