这种日志就是用来记录在MySQL上执行过的SQL语句,包括DDL和DML以及特殊命令如SET,而不仅仅是select语句。因为select可能非常频繁,因此通用查询日志默认是没有开启的,一般在需要采样分析的时候才会开启并且要及时的关闭。开启通用查询日志不仅浪费存储空间,还会由于频繁的IO而影响系统性能。
例如要分析哪些查询最耗时,对哪些表或哪些列的查询比较频繁就需要通过通用查询日志来分析。
1.开启通用查询日志
有两种方法来开启通用查询日志,一种是在登录mysql后执行命令,另一种是在my.cnf中配置。
(1)执行命令开启: SET GLOBAL general_log=1; //=0就是关闭通用查询日志。
此时在默认在mysql的data目录中生成了localhost.log文件,该文件就是通用查询日志文件。
(2)my.cnf中配置的方式,在my.cnf文件的[mysqld]下面任意一行增加或修改配置:
general_log-file[=path/[filename]] //可见=后面都是可选的,即有默认的保存日志的文件
general_log=1 //表示开启通用查询日志
推荐使用第一种方式开启或关闭通用查询日志,因为my.cnf的修改要生效需要重启mysql服务,并且这种通用查询日志的开启不需要一直开启而是短时间开启就需要关闭,所以在 my.cnf关闭时又要重启mysql服务。
如果没有指定通用查询日志文件的位置(general_log-file),包括SET命令开启的,默认会放在数据文件所在目录中,以主机名.log命名,例如:/var/lib/mysql/localhost.log
2.通用查询日志文件的内容
例如登录mysql后执行了select语句,那么就是将该语句实时的记录到通用查询日志中,例如:
包括对mysql执行的一些特殊命令,例如set命令都会记录下来
3.删除查询日志
查询日志由于SQL语句会非常频繁的执行,因此使用完毕后要即使关闭并删除不需要的查询日志,例如:
set global general_log=0;
rm -f /var/lib/mysql/localhost.log
删除日志文件之前需要先关闭通用查询日志,然后才能删除,否则可能会引起mysql的错误。如果是配置到了my.cnf文件中,那么需要先取消配置并重启mysql服务,然后才可以删除日志文件。