Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1210838
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Mysql/postgreSQL

2013-04-11 16:00:22

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

  普通查询日志记录mysqld所做的操作,比如当客户端连接或断开连接时,都会向该文件中写入相关信息,客户端发出的语句也会被记录到普通查询日志中。通过该日志文件可以查询客户端都提交了什么,这点对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数据库运行时也可以控制查询日志的输出,主要通过系统环境变量:

      
  • 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

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

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

    SET GLOBAL general_log = ¨OFF¨;

    SET GLOBAL general_log = ¨ON¨;

  如果要启用或禁用某个会话产生的普通查询日志,可以通过在会话级设置SQL_LOG_OFF参数的值为OFF/ON来控制。
=================================================
连载:
MySQL数据库中的日志文件---(1)错误日志

阅读(1148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~