分类: Mysql/postgreSQL
2014-06-26 13:05:28
MySQL中的查询日志分两种:
普通查询日志记录mysqld所做的操作,比如当客户端连接或断开连接时,服务器都会向该文件中写入相关信息,客户端发出的SQL语句也会被记录到普通查询日志中。通过该日志文件可以查询客户端都提交了什么,这点对DBA会很有帮助,举例来说DBA怀疑客户端执行的操作有问题,就可以通过普通查询日志确定客户端究竟执行的是什么。
Mysqld将接收到的语句按照接收的顺序(注意不是执行顺序)写到查询日志文件中。
控制普通查询日志文件的输出主要有下列几点:
如果指定参数时没有给查询日志指定文件名,则默认文件名为host_name.log,保存在mysql的data目录下。
MySQL数据库运行时也可以控制查询日志的输出,主要通过系统环境变量:
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来控制。