简介

MySQL的日志有主要有四种,会记录不同的操作行为,分别是----二进制日志、错误日志、查询日志、慢查询日志。开启日志是MySQL安全的必要手段之一,但是会影响MySQL的性能,所以要学会日志管理,根据实际的业务需求来选择日志。

详解

查询日志

查询日志记录了mysql的所有用户操作,包括启动和关闭服务、执行查询和更新语句等。

开启查询日志

mysql服务器默认情况下并没有开启查询日志。
在my.ini或my.cnf的[mysqld]组下加入log选项,形式如下:

[mysqld]
log[=path/[filename]]

path为日志文件所在目录路径,filename为日志文件名。可以不指定目录和文件名,将默认存储在mysql数据目录中的hostname.log文件中。

查看查询日志

查询日志是以文本文件的形式存储的,可以直接打开查看。
文件内容如下:

E:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld, Version: 5.7.19-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
140801 23:39:33        1 Connect    root@localhost on 
            1 Query    SHOW VARIABLES
            1 Query    SHOW WARNINGS
            1 Query    select timediff( curtime(), utc_time() )
            1 Query    SHOW COLLATION
            1 Query    SET NAMES utf8
            1 Query    SET character_set_results=NULL
            1 Query    SELECT * FROM `emp`
140801 23:39:44        1 Query    SELECT * FROM `emp`
            1 Query    SELECT * FROM `emp`
140801 23:39:55        1 Query    USE test;

SELECT * FROM `emp`
            1 Init DB    test

删除查询日志

  • 删除查询日志文件,再执行下一步。
  • 执行 flush logs 命令生成新的查询日志文件。

慢查询日志

慢查询日志是记录查询时长超过指定时间的日志。慢查询日志主要用来记录执行时间较长的查询语句,通过慢查询日志可以找出执行时间较长、执行效率较低的语句,然后进行优化。

开启慢查询日志

mysql中慢查询日志默认是关闭的。
在my.ini或者my.cnf文件中开启慢查询日志的配置如下:

[mysqld]
log-slow-queries[=path/[filename]]
long_query_time=n

path为日志文件所在目录路径,filename为日志文件名。可以不指定目录和文件名称,默认存储在数据目录中文件名为hostname-slow.log,hostname是mysql服务器的主机名。
long_query_time设置查询时间,超过这个时间的语句会被记录。可以不写,默认十秒(单位秒)。

查看慢查询日志

慢查询日志也是以文本文件的形式存储的,可以直接打开查看。
文件内容如下:

E:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld, Version: 5.7.19-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
# Time: 140802  0:02:29
# User@Host: root[root] @ localhost [::1]
# Query_time: 7.578125  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use test;
SET timestamp=1406908949;
SELECT BENCHMARK (10000000,PASSWORD ('newpwd'));

删除慢查询日志

  • 删除慢查询日志文件,再执行下一步。
  • 执行 flush logs 命令生成新的慢查询日志文件。