mysql日志分析

MySQL的四种日志

错误日志

     错误日志是mysql中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
当数据库出现任何故障导致无法正常使用时,建议首先查看该日志

查看错误日志的位置

 show variables like '%log_error%';

二进制日志

查看二进制日志的位置

show variables like '%log_bin%';

二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询(select show)语句

作用:

  1. 灾难时的数据恢复
  2. mysql的主从复制
在mysql8版本中默认二进制日志是开启着的。
二进制日志格式:
  1. STATEMENT 基于sql语句的日志记录,记录的是sql语句,对数据进行修改的sql都会记录在日志文件中。
  2. ROW 基于行的日志记录,记录的是每一行的数据变更。(默认)
  3. MIXED 混合了STATEMENT和ROW两种格式,默认采用STATEMENT,在某些特殊情况下会自动切换为ROW进行记录。
查看二进制日志格式:
show variables like '%binlog_format%';

二进制日志的查看

由于日志是以二进制的方式存储的,不能直接读取,需要通过二进制日志查询工具mysqlbinlog来查看,具体语法
mysqlbinlog 参数选项 日志文件名
参数选项有以下:
-d 指定数据库名称,只列出指定的数据库相关操作。
-o 忽略掉日志中的前n行命令。
-v 将行事件(数据变更)重构为sql语句。
-vv 将行事件(数据变更)重构为sql语句,并输出注释信息。
如果二进制文件存储格式为row 查看时需要加上参数 -v
mysqlbinlog -v binlog.000002
如果查看的二进制文件存储格式为STATEMENT在查看时则不需要加参数-v(它存储的本来就是sql语句)
mysqlbinlog binlog.000002

慢查询日志

慢查询日志记录了所有执行时间超过参数long_query_time设置的值并且扫描记录数不小于min_examined_row_limit的所有sql语句的日志,默认未开启。
开启慢查询日志
slow_query_log = 1
long_query_time=3 //这里的3代表秒数
慢查询日志的文件名为 localhost-slow.log
慢查询日志默认情况下不会记录管理语句,也不会记录不使用索引进行查找的语句。可以使用log_slow_admin_statements和更改此行为log_queries_not_using_indexes,如下所述
#记录执行较慢的管理语句
log_slow_admin_statements = 1  
#记录执行较慢未使用索引的语句
log_queries_not_using_indexes = 1 

查询日志

查询日志中记录了客户端所有的操作语句,而二进制日志不包含查询数据库的sql语句。默认情况下,查询日志是未开启的。
如果需要开启查询日志,可以设置如下配置。(因为它记录了所有语句,日志文件会非常大所以默认关闭着的)
查看查询日志是否开启
show variables like '%general%';
开启查询日志就是配置mysql的配置文件
增加
general_log = 1 //或者on 都行
general_log = /www/server/data/VM-12-16-centos.log //VM-12-16-centos.log这个日志名称可以随意更改

提供最优质的资源集合

立即查看 了解详情