阅读正文之前一定要仔细阅读下边的建议:
1)、最好使用电脑阅读。
2)、如果你非要使用手机阅读,请把手机字体调到最小,这样阅读的效果会好些。
3)、零散的阅读并不会得到知识的提升,要想提升,您还得从头开始观看。
5)、在阅读本篇文章之前,您最好阅读过下边几篇文章,要不然可能达不到您想要的结果。
上周我们讲解了MySQL错误日志,不知道您掌握了没有,若还没掌握,您还是移步到仔细阅读一下,本篇文章不适合你。
接下来,我们进入正题……
含义
MySQL通用查询日志,它是记录建立的客户端连接和执行的所有DDL和DML语句(不管是成功语句还是执行有错误的语句),默认情况下,它是不开启的。请注意,它也是一个文本文件。通用查询日志全局变量有三个,一个是开启状态,一个是通用查询日志输出格式,一个是通用查询日志存储文件路径,分别是:
general_log=[OFF|ON] (此变量表示开启状态,OFF表示关闭,ON表示开启,默认是OFF)
log_output=[none|file|table|file,table](此变量表示通用查询日志输出格式,none表示不输出,file表示输出到文件,table表示输出到表,若采用输出到表,则日志在mysql.general_log表中查看,file,table表示即输出到文件,也输出到表,默认是输出到文件)
general_log_file=/usr/local/mysql/data/Centos6.log (此变量表示通用查询日志存储文件路径)
开启方式
MySQL通用查询日志,它的开启方式有两种:
一种是修改全局变量值
SET global general_log=1;# 在全局模式下,开启通用查询日志,1表示开启,0表示关闭
或
SET @@general_log=1;
一种是修改配置文件进行修改(不推荐,因要重启MySQL服务器,但是这种是永久性修改的)
修改my.cnf配置文件中的
[mysqld]general-log-file=path/[filename] #查询日志保存的位置general-log=1 # 开启通用查询日志
输出方式
MySQL通用查询日志,它的输出方式也有两种:
一种是修改全局变量值
SET global log_output=file;#在全局模式下,设置通用查询日志输出格式,默认是输出到文件
或
SET @@log_output=file;
一种是修改my.cnf配置文件(不推荐,因要重启MySQL服务器,但是这种是永久性修改的)
[mysqld]
log-output=file#通用查询日志输出格式
演示案例
我们的演示案例采用第一种方式,先查查默认情况下,通用查询日志开启状态,通过 show variables like ‘%general_log%’可查看如下结果:
通用查询日志输出格式,我们采用默认输出格式,即输出格式为file
查看通用查询日志文件内容,可显示此次的文件内容为空
#cat /usr/local/mysql/data/Centos6.log
现在将其开启,在MySQL客户端执行:
set global general_log=1;
再执行一些DML语句
此时,我们再查看通用查询日志内容如下:
#cat /usr/local/mysql/data/Centos6.log
通用查询日志格式:
Time
语句执行的时间
Id
连接mysql的客户端会话id
Command
执行命令的类型
Argument
执行的语句
说明,我们通用查询日志,已经是开启状态,可再次通过命令查看:
show variables like ‘%general_log%’;
若设置通用查询日志输出格式为表,即执行:
set global log_output=’table’;
我们再次执行一些SQL语句之前,先查看一下通用查询日志内容:
我们虽然设置了通用查询日志输出格式是table,但在执行这句瞬间,仍然还是file,所以,在执行这句瞬间及之前,仍然是file的,实际上这条语句也会记录在mysql.general_log表中,从这条语句执行之后,所有执行语句会记录到mysql.general_log表中,现在我们执行一些SQL语句,看看效果吧
我们先看看通用查询日志,看看有没有记录
很显然,从上面打印日志内容来看,刚刚执行两条查询语句,并没有输出到日志文件中,现在我们看看mysql.general_log表的记录吧
清空通用查询日志
清空完后,再次查看日志内容
#echo > /usr/local/mysql/data/Centos6.log
#cat /usr/local/mysql/data/Centos6.log
请注意,通过全局变量进行修改的值,在数据库服务器重启下,之前通过全局变量进行修改的值又恢复到默认值了,即通过全局变量进行修改的变量值只在服务器不重启的情况下,是全局有效的,换句话说,如果你的数据库服务器在线上重启多的话,而又要开启通用查询日志,请通过修改my.cnf方式进行修改。
总结:由上可见,通过查询日志会随着时间日积月累,文件不断增大,因此线上是不建议开启通用查询日志的,因为会浪费存储空间,而且还会占用IO带宽,除非,要做采样分析时,可以开启通用查询日志,采样完毕后再关闭通用查询日志。
到这里,我们通用查询日志讲完啦,不知道你掌握了没有,下一篇我们开始讲解MySQL二进制日志。
如果这篇文章对你有帮助的话,点在看+转发哈!!!