监听并记录MySQL的查询日志

鸿辰 MySQL 2.21 K

说明

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

查看当前配置

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

show variables like '%general_log%';

监听并记录MySQL的查询日志-第1张图片-鸿辰个人分享站

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

查看MySQL的日志记录方式

show variables like 'log_output';

监听并记录MySQL的查询日志-第2张图片-鸿辰个人分享站

开启查询日志

设置动态参数开启

set global general_log = on;

监听并记录MySQL的查询日志-第3张图片-鸿辰个人分享站

查看当前配置

show variables like 'general_log';

监听并记录MySQL的查询日志-第4张图片-鸿辰个人分享站

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

设置记录方式

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

set global log_output='table';

监听并记录MySQL的查询日志-第5张图片-鸿辰个人分享站

查看当前配置

show variables like 'log_output';

监听并记录MySQL的查询日志-第6张图片-鸿辰个人分享站

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

select * from mysql.general_log;

监听并记录MySQL的查询日志-第7张图片-鸿辰个人分享站

关闭查询日志

设置动态参数关闭

set global general_log = off;

监听并记录MySQL的查询日志-第8张图片-鸿辰个人分享站

查看当前配置

show variables like 'general_log';

监听并记录MySQL的查询日志-第9张图片-鸿辰个人分享站

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

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

标签: MySQL