欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

2.1 普通查询日志(The General Query Log)

程序员文章站 2022-05-23 22:16:38
...

2.1普通查询日志(TheGeneralQueryLog) 普通查询日志记录mysqld所做的操作,比如当客户端连接或断开连接时,服务器都会向该文件中写入相关信息,客户端发出的SQL语句也会被记录到普通查询日志中。通过该日志文件可以查询客户端都提交了什么,这点对DBA会很有

2.1 普通查询日志(The General Query Log)

  普通查询日志记录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系统下可以通过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来控制。
=================================================
连载: