MySQL 日志介绍
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 | log-output = table, file # 表示日志可以同时输出到表和文件中 |
如果不设置此参数,则默认输出到文件。
日志的读取
查询日志记录的格式是纯文本,所以可以直接进行读取。
** 注意:** 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-statements
和 log_queries_not_using_indexes
进行控制。
开启慢查询日志
修改配置文件:
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" 转载请保留原文链接及作者。