当前位置:首页 > 编程相关 > MySQL > 正文内容

监听并记录MySQL的查询日志

martinsun1年前 (2021-01-27)MySQL760

说明

在开发过程中,有时候遇到SQL语句错误,但由于是动态生成的SQL语句不方便排查,此时可以通过监听MySQL的查询日志来排查。MySQL查询日志会记录所有请求操作的SQL,不论SQL语句是否正确。

查看当前配置

MySQL中的参数general_log用来控制开启、关闭MySQL查询日志,参数general_log_file用来控制查询日志的位置。所以如果你要判断MySQL数据库是否开启了查询日志,可以使用下面命令。general_logON表示开启查询日志,OFF表示关闭查询日志。

show variables like '%general_log%';

MySQL的查询日志支持写入文件或写入数据表两种形式,这个由参数log_output

查看MySQL的日志记录方式

show variables like 'log_output';

开启查询日志

设置动态参数开启

set global general_log = on;

查看当前配置

show variables like 'general_log';

可以看到general_log变成了ON,表示开启成功。

设置记录方式

上面说到,记录方式可为文件或表,默认是使用的文件,也可以配置log_output使用保存记录到表

set global log_output='table';

查看当前配置

show variables like 'log_output';

上图中,log_output值变成了TABLE,则表示当前日志记录会保存到gengera_log 表中,可使用下面的查询语句查看。

select * from mysql.general_log;

关闭查询日志

设置动态参数关闭

查看当前配置

show variables like 'general_log';

general_log变成了OFF,表示已经关闭。

需要注意,在日常开发中可以长时间开启日志记录,但在实际应用环境中,必须将日志记录关闭,因为会影响很大的数据库服务器性能~

版权声明:本文由MartinSun发布,内容供学习参考使用。

图文说明:部分图文来源于网络,如侵权请联系删除。

本文链接:https://www.sunyonghong.com/?id=28

标签: MySQL
分享给朋友:

相关文章

MySQL按分类查询指定数量的数据

说明此SQL仅供参考,在数据量大时,需要考虑优化! SQL语句SELECT a.* FROM edu_course AS a WHERE (SELECT...

MySQL批量更新表编码

获取批量更新的SQL语句SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, '...