我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

mysql默认情况下,是无法查看在系统运行过程中,都执行了什么sql的。有个查询当前sql的功能,不过那个稍纵即逝。根本无法捕获有用信息。(sqlserver是有这个功能的,企业管理器里面就可以查看)而我们在分析一个新的系统的时候。就需要对其所有的sql都记录下来。怎么操作呢?跟着苏南大叔做就行了。

苏南大叔:如何利用 mysql 的慢查询功能,对未知系统进行分析 - mysql慢查询
如何利用 mysql 的慢查询功能,对未知系统进行分析(图4-1)

话说碰到一个新的未知代码的时候,对系统进行分析是件非常痛苦的事情。那么今天苏南大叔带给大家的就是,如何利用mysqlsql慢查询的日志功能,对未知系统进行分析。前提是,这个系统用了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";

苏南大叔:如何利用 mysql 的慢查询功能,对未知系统进行分析 - mysql_log_setting
如何利用 mysql 的慢查询功能,对未知系统进行分析(图4-2)

我们需要开启前两个项目,然后设置『慢』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;

苏南大叔:如何利用 mysql 的慢查询功能,对未知系统进行分析 - mysql_log_setting-2
如何利用 mysql 的慢查询功能,对未知系统进行分析(图4-3)

注意:这里的小技巧。把long_query_time设置为0,就是大于0sql查询都认为是『慢』查询,这样的话,就记录下所有的sql了。

查看效果

运行你要分析的功能,然后查看对应的log日志就可以了。苏南大叔是在mac下面分析的piwik,所以,操作就是:触发piwik的相关功能,然后使用tail命令查看的日志输出。

注意:tail并不是mysql里面的功能,所以,这里需要再开一个终端(非mysql命令行),来执行这个命令。或者在当前mysql的命令行下面,执行exit退出即可。

tail -f /usr/local/var/mysql/localhost-slow.log

注意:log日志的路径来自最开始的第四条查询的输出。请根据你的实际情况进行替换。

苏南大叔:如何利用 mysql 的慢查询功能,对未知系统进行分析 - mysql_log_setting-3
如何利用 mysql 的慢查询功能,对未知系统进行分析(图4-4)

上述设置后,瞬间就得到了,piwik如何记录一条新的访问记录的所有逻辑。是不是非常简单明了?至于,苏南大叔是怎样把本地的piwik『放到』别人的网页里面的。请查看这里:

结语

上述设置,是在当前操作环境下生效的。如果你重启了mysql,上述设置就消失了。对于如何固化这些设置。请点击这里查看:

欢迎关注苏南大叔给大家带来的mysql系列文章,详情请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mysql