mysql数据库日志文件之普通查询日志文件详解

发布时间:2021-01-08编辑:脚本学堂
有关mysql日志文件中普通查询日志文件的相关知识,mysql普通查询日志的用途有哪些,mysql控制普通查询日志文件的输出方式,需要的朋友参考下。

在众多的mysql/ target=_blank class=infotextkey>mysql数据库日志文件中,有一类日志文件为mysql普通查询日志,关于它的使用,介绍的比较少,本节jbxue小编整理了一些相关内容,分享给大家。

一、查询日志(query log)

mysql查询日志分两种:

普通日志(general query log):
慢日志(slow query log):

二、普通查询日志(the general query log)

众多mysql日志文件类型中,普通查询日志记录mysqld所做的操作,比如当客户端连接或断开连接时,服务器都会向该文件中写入相关信息,客户端发出的sql语句也会被记录到普通查询日志中。通过该日志文件可以查询客户端都提交了什么,这点对dba会很有帮助,举例来说dba怀疑客户端执行的操作有问题,就可以通过普通查询日志确定客户端究竟执行的是什么。

mysqld将接收到的语句按照接收的顺序(注意不是执行顺序)写到查询日志文件中。

控制普通查询日志文件的输出主要有下列几点:

在5.1.6版本之前,普通查询日志只能记入操作系统文件,要启用日志记录功能,可以在启动mysqld进程时附加--log[=file_name]参数(或简写形式-l [file_name]);
自5.1.6版本起,查询日志也可写到数据库系统中的专用表;
自5.1.6版本起,启用mysqld进程时附加--log[=file_name]或-l [file_name]参数启用查询日志记录功能,通过--log-output指定日志输出类型,有表(table)和日志文件(file)两个选项;
自5.1.12版本起,新增--general_log[={0|1}]参数指定普通查询日志的输出状态,用来启用或禁用普通查询日志,默认值为1即启用,指定值为0时,表示禁用普通查询日志。
自5.1.29版本起,新增--general_log_file=file_name指定日志文件名,原--log和-l参数被废弃。
如果指定参数时没有给查询日志指定文件名,则默认文件名为host_name.log,保存在mysql的data目录下。

mysql数据库运行时也可以控制查询日志的输出,主要通过系统环境变量
general_log:设置值为0表示禁用,设置值为1表示启用;
general_log_file:设置日志文件存储路径及文件名;
log-output:控制输出类型,注意如果设置该参数值为"none",那么即使上面两个参数均启用日志输出,也不会有任何时间真正被输出,如果要输出日志到文件,那么log-output参数值中必须包含有"file"参数值。

mysql服务重新启动,或者刷新日志都不会生成新的普通查询日志文件,要生成新的日志文件,unix系统下可以通过linuxjishu/13997.html target=_blank class=infotextkey>mv命令,例如:
 

shell> mv host_name.log host_name-old.log
shell> mysqladmin flush-logs
shell> cp host_name-old.log backup-directory
shell> rm host_name-old.log


如果是windows平台的话,在5.1.3版本之间,数据库系统运行过程中是不能修改日志文件名的,必须停止服务,然后重命令文件,然后再重启服务。

从5.1.12版本开始,可以实时启用或禁用普通查询日志,不需要重启服务,例如:
 

set global general_log = ¨off¨;
set global general_log = ¨on¨;


如果要启用或禁用某个会话产生的普通查询日志,可以通过在会话级设置sql_log_off参数的值为off/on来控制。