mysql的general log和slow log的配置步骤



一、mysql日志整体说明


MySQL 日志文件有一下几种:


错误日志 error.log
慢查询日志 slow.log
一般日志  general.log
二进制日志 binlog


重做日志 redo.log
回滚日志 undo.log


一般其他日志在数据库创建完毕后,直接进行迁移即可;slow.log 和 general.log 可能根据情况进行设置;
这两种日志具体修改步骤如下:


二、general log日志配置

General log:
Geleral log记录了服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,general log 都会将其记录下来 ,记录的格式为 {Time ,Id ,Command,Argument }。也正因为mysql服务器需要不断地记录日志,开启General log会产生不小的系统开销。 因此,Mysql默认是把General log关闭的。 我们可以通过修改Mysql全局变量来开启General log功能或是更改日志存放路径。 


注意:mysql5.0版本,如果要开启slow log、general log,需要重启,从MySQL5.1.6版开始,general query log和slow query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改。


1、确认mysql版本及日志参数配置
mysql> select version();


接下来通过如下命令可以查看 mysql默认的 General log 配置。
mysql> show variables like 'log_output';
mysql> show global variables like '%general%';


2、通过 命令配置General log。
如果要配置开启general log,则执行命令如下:
set global log_output=file;
set global general_log_file='/tmp/general.log';
set global general_log = on;


如果要配置开启general log,则执行命令如下:
set global general_log = off;


3、确认修改后的general log的配置:
mysql> show variables like 'log_output';
mysql> show global variables like '%general%';
# tail -f /data/mysqldata/3307/error.log




三、slow log日志的配置


同样类似的slow log也可以按照类似的步骤进行:

General log日志内容比较简单,不包含执行时间或其他只有在查询结束之后才能得到的信息,相反,slow log 记录了这些内容。
查看一下与慢日志相关的全局变量。
mysql> show global variables like '%slow%';


变量slow_launch_time的值代表着捕获所有执行时间超过2秒的查询。slow log可以记录没有使用索引的查询,它也能记录执行速度比较慢的管理命令。
开启log_queries_not_using_indexes,将会记录没有使用索引的查询到slow日志里。
mysql> show global variables like '%not_using%';


slow log 的日志格式为:
# Time: 111108 19:38:00
# User@Host: root[root] @ localhost []
# Query_time: 15.268541 Lock_time: 0.000237 Rows_sent: 1 Rows_examined: 102
use mytest;
SET timestamp=1320752280;
select count(a.b) from mytable a ,mytable b ,mytable c ,mytable d;


慢速日志的确提供了很多有用的信息,但是不代表出现的查询一定一直都是慢的。如果同样的查询在慢速日志里出现了多次,那么它的确需要优化,但是如果只是出现了偶尔一两次,则有可能是其他客观原因造成的,比如某些锁,I/O磁盘物理性问题,网络问题等等。
慢速日志的slow_launch_time的时间单位为秒,可以通过网上第三方补丁将其更改为毫秒级,用于更加精细的日志记录和分析,但是这需要重新编译mysql。


四、日志分析内容与意义


  对Mysql进行深入的分析对于发现mysql性能瓶颈和寻找优化策略是十分必要的。 我们可以从不同的粒度上对Mysql进行分析:可以整体分析服务器,或者检查单个查询或批查询。
通过分析,我们得到的如下信息:
1、Mysql访问得最多的数据
2、Mysql执行得最多的查询的种类
3、Mysql停留时间最长的状态
4、Mysql用来执行查询的使用得最频繁的子系统
5、Mysql查询过程中访问的数据种类
6、Mysql执行了多少种不同类型的活动,比如索引扫描。


Mysql提供了两种查询日志,它们可以为我们获取以上信息提供帮助。 这两种查询日志为普通日志(general log)和慢速日志(slow log)


在普通日志(general log)和慢速日志(slow log)中查找下面几个信息:长查询、影响比较大的查询和新查询。这可能需要我们自己写一下脚本或是借助某些第三方工具进行日志分析。 
General log 系统开销比较大,一般不建议开启。






你可能感兴趣的:(mysql)