26.mysql日志
mysql日志包括:错误日志、二进制日志、查询日志、慢查询日志。

26.1 错误日志
错误日志记录了mysqld启动到停止之间发生的任何严重错误的相关信息。
mysql故障时应首先查看错误日志。
可以用--log-error= 选项来指定mysqld起动后错误日志保存得路径和文件名。
不指定时默认路径为数据目录(datadir参数指定),默认文件名为host_name.err。

26.2 二进制日志binlog
二进制日志记录所有的DDL操作和DML操作,不包括DQL(select)操作,用于mysql复制和灾难恢复。
26.2.1 日志的位置和格式
参数log-bin指定了binlog的路径和文件名,默认路径为数据目录(datadir参数指定),默认文件名为host_name-bin.000001。
binlog格式分为statement、row、mixed 3种,由参数binlog-format指定,默认使用mixed。
1.statement:记录每条DDL和DML语句,从库依次执行该语句以达到主从同步的目的。
优点:日志清晰易读,日志量少,对IO影响小。
缺点:数据一致性差。
2.row:记录DDL和DML语句影响到的每行变前、变后数据,从库更新变后数据以达到主从同步的目的。
优点:记录数据变化细节,数据一致性高。
缺点:日志量大,对IO影响大。
3.mixed:对不确定SQL使用row格式记录binlog,对确定SQL使用statement格式记录binlog。
不确定SQL指SQL适用的行数与数据有关是不确定的,例如update和delete语句不使用主键列作为where条件,或使用数据库函数now()等。
优点:中和了statement和row的优缺点。
26.2.2 日志的读取
二进制日志binlog不能直接读取,需要使用mysqlbinlog工具读取。
语法:
# mysqlbinlog log_file
statement格式的日志内容:
连接数据库,设置时间戳,设置唯一、外键、非空约束,设置SQL模式,设置字符集和排序规则,记录SQL语句,设置时间戳,记录SQL语句...
row格式的日志内容:需要增加-v或者-vv选项。
26.2.3 日志的删除
binlog日志占用大量磁盘空间,需要定期删除。
删除方法如下:
1.reset master 将原有binlog全部删除,新的binlog从000001重新开始。
2.purge master logs to 'hostname-bin.00000x' 将00000x之前的日志全部删除。
3.purge master logs before 'yyyy-mm-dd hh24:mi:ss' 将'yyyy-mm-dd hh24:mi:ss'时间之前的日志全部删除。
4.设置日志过期天数参数expire_logs_days=1 将1天之前的日志全部删除。
26.2.4 其他选项(参数)
binlog-do-db=db_name 指定记录binlog的数据库,多个数据库时写多条语句
binlog-ignore-db=db_name 指定不记录binlog的数据库,多个数据库时写多条语句
sync-binlog=N 每写N次日志时将binlog从内存缓冲区刷新到磁盘上
innodb-safe-binlog
sql_log_bin=0 不记录binlog

26.3 查询日志
查询日志记录了执行的所有语句,日志内容为文本格式。
26.3.1 日志的位置和格式
参数:
general_log=0|1 是否启用查询日志,general_log=默认为1启用查询日志;不设置general_log指不启用查询日志。
general_log_file=file_name 设置查询日志的路径和文件名,默认路径为DATADIR,默认文件名host_name.log
log_output=NONE|FILE|TABLE|FILE,TABLE
NONE指不保存查询日志;
FILE指将查询日志保存在文件host_name.log中(默认FILE);
TABLE指将查询日志保存在表中,保存在表中比保存在文件中要占用更多的资源;
FILE,TABLE指将查询日志同时保存在文件中和表中。
sql_log_off=on|off 指在session级别控制本条SQL是否记录查询日志。
设置参数:
1.在my.cnf文件中设置,并重启mysql
2.在global级别设置
mysql> set global general_log=0;
3.在session级别设置
mysql> set sql_log_off=on

26.3.2 日志的读取
查询日志内容是文本格式,可直接读取。
注意:查询日志记录了所有数据库操作,对于访问频繁的系统,日志对系统性能影响较大时建议关闭查询日志。

26.4 慢查询日志
慢查询日志记录了所有执行时间超过参数long_query_time设置值,并且扫描记录不小于参数min_examined_row_limit的所有SQL语句的日志。
注意:
参数long_query_time 单位:秒,默认值10秒,精度可以到微秒,如:2.999999秒;
获得表锁的时间不算作执行时间;
默认情况下管理语句和不使用索引的查询语句不记录慢查询日志;
管理语句包括:alter table,analyze table,check table,create index,drop index,optimize table,repair table等;
可以通过参数--log-slow-admin-statements启用对管理语句记录慢查询日志;
可以通过参数--log-queries-not-using-indexes启用对不使用索引的查询语句记录慢查询日志。
参数汇总:
slow_query_log=0|1 : 是否开启慢查询日志,不设置默认关闭,slow_query_log=默认开启。
log_slow_queries : 指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留)
slow_query_log_file : 指定慢查询日志的路径和文件名,默认路径为DATADIR,默认文件名host_name-slow.log。
long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s。
min_examined_row_limit: 查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
og-slow-admin-statements: 是否启用对管理语句记录慢查询日志
log_queries_not_using_indexes: 是否启用对不使用索引的查询语句记录慢查询日志

26.4.1 日志的位置和格式
慢查询日志默认路径为DATADIR,默认文件名host_name-slow.log。
log_output=NONE|FILE|TABLE|FILE,TABLE 也控制慢查询日志输出格式。

26.4.2 日志的读取
错误日志、查询日志、慢查询日志内容都是纯文本格式,可以直接读取。
set long_query_time=2;
set long_query_time=0.01;
set log_output=FILE,TABLE;
从表中查看慢查询日志
select * from slow_log where sql_text='?';
用mysqldumpslow工具可以对慢查询日志进行分类汇总(对同一语句进行统计):
# mysqldumpslow host_name-slow.log
慢查询日志可以发现有性能问题的SQL,建议开启慢查询日志。

26.5 mysqlsla简介
mysqlsla(Mysql statement log Analyzer)是用于日志分析的第三方工具,
可以分析查询日志、慢查询日志、二进制日志和自定义日志。
下载地址http://hackmysql.com/mysqlsla
man mysqlsla 帮助命令,用于查看mysqlsla的参数
mysqlsla --log-type general host_name.log 解析查询日志
mysqlsla --log-type msl host_name.log 解析带微妙的查询日志
mysqlsla --log-type slow host_name-slow.log 解析慢查询日志
mysqlbinlog binlog-00000.x | mysqlsla --log-type binary - 解析binlog日志
mysqlsla --log-type udl --udl-format udl.log 解析自定义格式的日志
注意:除二进制日志外,可以省略--log-type选项,即mysqlsla file_name.log即可。
mysqlsla --statement-filter|-sf +update file_name.log 仅显示update语句的日志
mysqlsla --statement-filter|-sf -delete file_name.log 不显示delete语句的日志
mysqlsla --explain|-ex file_name.log 在报表中显示执行计划
mysqlsla --sort file_name.log 对分析结果进行排序,慢查询日志和微妙日志按总执行时间排序,其它日志按总执行次数排序
mysqlsla --grep PATTERN 用PATTERN匹配SQL语句中的字符串,如--grep 'count' 只显示带count的SQL语句的分析结果。
分析结果第一部分是对被分析日志的总体介绍,如:
Auto-detected logs as general logs 自动探测到日志的类型
109 queries total 总的查询次数
36 unique 对SQL语句去重(将实际值抽象并过滤空格后distinct)后的查询次数
sorted by 'c_sum'|'t_sum' 结果的排序方式是按总执行次数排序,还是按总执行时间排序
分析结果第二部分是报告的主题,按照执行次数由大到小的顺序输出前10条SQL的统计信息,如:
Count :16(14.68%) 该SQL的执行次数及占比
Connection ID:2 该SQL的连接次数
Database:test 执行该SQL的数据库
Users: 执行该SQL的用户,如果多个用户时,按每个用户的执行次数比例显示
Query abstract:xxx 该SQL抽象后的语句
Query sample:xxx 该SQL带入实际参数值的样例
可以将mysqlsla的常用配置选项写入mysqlsla配置文件~/.mysqlsla文件。
除mysqlsla外,还有其它日志分析工具,如:myprofi、mysql-explain-slow-log、mysqllogfilter等。

26.6 小结

26.mysql日志的更多相关文章

  1. Mysql日志解析

    修改Mysql配置 Mysql配置地址为: C:\Program Files (x86)\MySQL\MySQL Server 5.5 如果无法修改可以把my.ini拷贝出来,修改完后,再拷贝回去! ...

  2. Mysql 日志 (转)

    MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 错误日志 在mysql数据库中,错误日志功能是默认开启的.并且,错误日志无法被禁止.默认情况下,错误日志存储在mys ...

  3. MySQL日志管理

    MySQL日志管理 2013年09月26日 ⁄ MySQL ⁄ 共 14266字 ⁄ 评论数 ⁄ 被围观 , views+ 一.日志类型: MySQL有几个不同的日志文件,可以帮助你找出mysqld内 ...

  4. mysql日志详细解析

    MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql数据库的重要组成部分.日志文件中记录着mysql数据库运行期间发生的变化:也就是说用来记录mysql ...

  5. mysql日志详细解析 [转]

    原文出处:http://pangge.blog.51cto.com/6013757/1319304 MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql ...

  6. mysql日志详细解析【转载】

    转自:http://pangge.blog.51cto.com/6013757/1319304 MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql数据 ...

  7. mysql 开发进阶篇系列 38 mysql日志之错误日志log-error

    一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志.这此日志记录着数据库在不同方面的踪迹(区别sql server里只有er ...

  8. mysql日志种类、二进制日志模式、mysqlbinlog解析二进制日志

    mysql日志的种类 二进制日志(binary log):记录数据更新的操作,mysqlbinlog 可查看二进制日志文件 错误日志(error log):记录mysql服务进程mysqld的启动.关 ...

  9. [转]mysql日志详细解析

    转自:http://pangge.blog.51cto.com/6013757/1319304 MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql数据 ...

随机推荐

  1. angularjs 做不到实时脏值查询

    angularjs 做不到脏值查询 ,数据请求过来,不操作其他按钮,请求的值就是展示不出来:(相当于,只有手动触发,angularjs内部才会把脏值查询出来): 解决办法:在请求过来的值旁边加上$sc ...

  2. EUREKA原理总结

    Eureka高可用架构 https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance 上图中主要的名称说明: Register:EurekaCli ...

  3. 2018面向对象程序设计(Java)第11周学习指导及要求

    2018面向对象程序设计(Java)第11周学习指导及要求 (2018.11.8-2018.11.11)   学习目标 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: ...

  4. find命令归总

    -amin n  (主要指是否被读取过)对文件的最近一次访问是在 n 分钟之前. 例如:find /opt/* -amin 1 -type f  (找出1分钟之前的/opt下的所有文件) -atime ...

  5. 使用tor网络

    在www.torproject.org/projects/torbrowser.html.en上找到合适的版本下载 下载好tor浏览器之后,解压双击Tor Browser,出现这个错误 这是因为kal ...

  6. Hibernate一对多关联映射的配置及其级联删除问题

    首先举一个简单的一对多双向关联的配置: 一的一端:QuestionType类 package com.exam.entity; import java.util.Set; public class Q ...

  7. 【翻译】 View Frustum Culling --1 View Frustum’s Shape

    这是一些列来自lighthouse3d的视锥体裁剪教程.旨在学习总结,及便于查阅. 1.视锥体的形状 在OpenGL中,透视投影是由两个函数定义的gluPerspective和gluLookAt.我们 ...

  8. PHP采集利器:Snoopy 试用心得

    Snoopy.class.php下载 Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单.Snoopy正确运行需要你的服务器的PHP版本在4以上,并且支持PCRE(Perl ...

  9. bootloader新的理解

    1.对于bootloader这样的程序,作为板卡刚开始启动的部分,大致的顺序是一致的,大部分都是分为两个部分,一部分是汇编编写的,一部分是用c语言编写的.一般在汇编部分完成各种初始化的操作,比如关闭看 ...

  10. HDU 1542 Atlantis(线段树面积并)

     描述 There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. S ...