MySQL的general日志

起因是一个客户的MySQL数据的data目录下会生成一个 名为ubuntu.log的日志且文件占用空间极大,平均每2周500G,所以才产生了处理该问题的想法。后来查询了相关资料其实就是一般日志开启了,但是又未指定其路径及名称所以就会一头雾水。

MySQL的general日志_第1张图片

MySQL的general日志是MySQL提供的一种记录所有SQL语句执行的日志文件。该日志文件可以用于调试和分析应用程序的性能问题,但在生产环境中应谨慎使用,因为会记录敏感信息,且生成的日志文件占用磁盘空间极大。

以下是MySQL的general日志配置详解:

打开MySQL配置文件my.cnf或my.ini。

在[mysqld]部分中添加以下行:

general_log=1
general_log_file=/path/to/general.log

其中,general_log参数指定是否启用general日志,1表示启用,0表示禁用;general_log_file参数指定日志文件的路径和名称。如果没有指定路径,则日志文件将保存在MySQL数据目录下。

重新启动MySQL服务器,以使更改生效。

问题解决!!!

MySQL的general日志_第2张图片

访问MySQL服务器,并执行一些SQL查询。

使用命令tail或cat查看日志文件,以确保日志文件正在记录SQL查询。

如果不再需要日志文件,请将general_log参数设置为0,并重新启动MySQL服务器。

请注意,启用general日志会影响MySQL服务器的性能,因为每个SQL查询都会写入日志文件。因此,在生产环境中,应仅在需要时启用日志,并及时禁用它。

SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';

这是将日志放在mysql.general_log表中可以查询

SET GLOBAL general_log_file = '/var/lib/mysql/mysql-general.log'; -- 设置日志的位置

如果配置后文件中没有生效的话就配置为

SET GLOBAL log_output = 'TABLE,FILE';

SHOW VARIABLES LIKE 'general_log%'; -- 查看配置

SELECT DATE_FORMAT(event_time, '%Y-%m-%d %H:%i:%s') AS time, 
       user_host, 
       thread_id, 
       server_id, 
       command_type, 
       CAST(argument AS CHAR) AS query 
FROM mysql.general_log;  --查看日志

 以下再推荐几种设置方式

第一种方法是通过修改MySQL配置文件来关闭日志。首先,使用vi等编辑器打开MySQL的配置文件my.cnf,找到以下两行代码:

log_error=/var/log/mysql/error.log

general_log_file=/var/log/mysql/mysql.log

将这两行代码前面加上#符号使其注释掉即可关闭日志。如果需要重新开启日志,只需将#符号去掉即可。

第二种方法是通过MySQL命令行关闭日志。打开MySQL命令行,输入以下命令:

SET global general_log=0;
SET global slow_query_log=0;

这样就可以将MySQL的普通日志和慢查询日志关闭。如果需要重新开启,只需将0改为1即可。

你可能感兴趣的:(mysql,数据库)