MySQL 日志介绍

  1. 错误日志
  2. 二进制日志
  3. 查询日志
    1. 日志的位置和格式
      1. 开启查询日志
      2. 查询日志的存储位置
    2. 日志的读取
  4. 慢查询日志
    1. 介绍
    2. 开启慢查询日志
    3. 慢日志的读取

MySQL 中有 4 中不同的日志,分别是错误日志、二进制日志(binlog 日志)、查询日志和,慢查询日志,应该充分利用这些日志对数据库进行各种维护和调优。

错误日志

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

配置:

1
log-error=mysql_error.log

二进制日志

二进制日志

查询日志

查询日志记录了客户端的所有语句,而二进制日志不包含查询语句。

日志的位置和格式

开启查询日志

可以通过参数 --general_log[={0|1}]--general_log_file=file_name 来配置查询日志。
--general_log 设置为 1 或者不带值都可以启用查询日志;设置为 0 或者不指定次参数表示关闭查询日志。
如果没有指定 --general_log_file=file_name 的值,且没有设置 --log-output 参数,那么日志将写入参数 datadir(数据目录)指定的路径下,默认文件名为 host_name.log。

这两个参数都是 global 类型,可以在系统启动时或者系统运行时进行动态修改,如果想在 session 级别控制,则通过在 session 中设置参数 sql_log_off 为 on 或者 off。

查询日志的存储位置

查询日志和慢查询日志都可以选择保存在文件或者表中,使用参数 --log-output[=value] 来进行控制,value 值可以是 table、file、none 的一个或者多个组合,中间用逗号进行分割,分别表示日志保存在表、文件、不保存在表和文件中,这里的表指的是 mysql 库中的 general_log (慢查询日志是 slow_log) 表。
其中 none 的优先级最高,比如:

1
2
log-output = table, file  # 表示日志可以同时输出到表和文件中  
log-output = table, none #由于 none 的优先级高,表示日志不保存在表和文件中。

如果不设置此参数,则默认输出到文件。

日志的读取

查询日志记录的格式是纯文本,所以可以直接进行读取。

** 注意:** log 日志中记录了所有数据库的操作,对于访问频繁的系统,此日志对系统性能的影响较大,建议一般情况下关闭。

慢查询日志

介绍

慢查询日志记录了所有执行时间超过参数 long_query_time(单位:秒) 设置值且扫描记录数不小于 min_examined_row_limit 的 sql 语句(注意:获得表锁定的时间不算作执行时间)。long_query_time 默认为 10 秒,最小为 0,精度可以到微秒。

在默认情况下,有两类常见语句不会记录到慢查询日志:管理语句和不使用索引进行查询的语句。管理语句包括 alter table、analyze table、check table、create index、drop index、optimize table、repair table。如果要监控这两类 sql语句,可以分别通过设置参数
--log-slow-admin-statementslog_queries_not_using_indexes 进行控制。

开启慢查询日志

修改配置文件:

1
2
3
4
5
6
# 开启慢查询日志
slow_query_log=1
# 指定慢查询日志的路径
slow_query_log_file="mysql-slow.log"
# 指定查询时间大于多少的才进行记录,单位是秒,也就是操作大于1s 的操作都会被记录。
long_query_time=1

慢日志的读取

和错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。
如果要设置微秒级的慢查询,可以 set global long_query_time=0.01

如果慢查询日志中记录内容很多,可以使用 mysqldumpslow 工具对慢查询日志进行分类汇总。对于 sql 文本完全一致,只是变量不同的语句,mysqldumpslow 将会自动视为同一个语句进行统计,变量值用 N 来代替。这个统计结果将大大增加用户阅读慢查询日志的效率,迅速定位系统的 sql 瓶颈。

** 注意: ** 慢查询日志对于发现应用中有性能问题的 sql 很有帮助,应该经常查看分析。

文章标题:MySQL 日志介绍

文章字数:1.1k

本文作者:Waterandair

发布时间:2017-06-24, 09:24:06

最后更新:2019-12-28, 14:03:59

原始链接:https://waterandair.github.io/2017-06-24-mysql-log.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

github