- 日志文件记录了影响MySQL数据库的各种类型活动
- 常见的日志文件有:
- 错误日志(error log)
- 慢查询日志(slow query log)
- 查询日志(query log)
- 二进制文件(bin log)
一、错误日志
- 错误日志文件对MySQL的启动、运行、关闭过程进行了记录。遇到问题时应该首先查看该文件以便定位问题。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确的信息
- 用户可以通过下面命令来查看错误日志文件的位置:
show variables like 'log_error'\G;
- 当MySQL不能正常启动时,第一个必须查找的文件应该就是错误日志文件,该文件记录了错误信息。例如下面显示数据库不能启动的原因是找不到权限哭mysql,所以启动失败
- 例如用户可以直接在错误日志文件中得到优化的帮助,而不需要通过查看数据库状态来得知。例如,下面的错误文件中的信息高度用户需要增加InnoBD存储引擎的redo log
二、慢查询日志
-
慢查询日志的主要用途:慢查询日志可以帮助定位可能存在问题的SQL语句,从而进行SQL语句层面的优化
log_slow_queries参数
- 该参数控制着MySQL是否开启慢查询日志的功能
- 默认值为关闭
show variables like 'log_slow_queries'\G;
long_query_time参数
- 例如,可以在MySQL启动时设一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志中。DBS可以对日志文件进行检查,确认是否有SQL语句需要进行优化
- long_query_time参数就是这个阈值。默认值为10,代表10秒
show variables like 'long_query_time'\G;
- 备注:只有运行时间大于long_query_time的SQL语句才会被记录下来,小于或等于long_query_time的SQL语句不会被记录下来
log_queries_not_using_indexes参数
- 开启了该参数之后,如果运行的SQL语句没有使用索引,则MySQL数据库会将这条SQL语句记录到慢查询日志文件
- 该参数默认关闭
show variables like 'log_queries_not_using_indexes'\G;
log_throttle_queries_not_using_indexes参数
- 从MySQL 5.6开始新增了这个参数,用来表示每分钟允许记录到slow log的且未使用索引的SQL语句次数
- 该参数默认值为0,表示没有限制,意思为每分钟记录到slow log的且未使用索引的SQL语句次数不限
show variables like 'log_throttle_queries_not_using_indexes'\G;
- 在生产环境下,若没有使用索引,此类SQL语句会频繁地被记录到slow log,从而导致slow log文件的大小不断增加,故DBA可通过此参数进行配置
mysqldumpslow命令
- 该命令是为了慢查询日志文件进行设计的。例如如果慢查询日志文件的内容过多,不容易进行信息筛选,那么可以通过此命令进行信息筛选
- 例如下面以默认命令格式查看nh122-190-slow.log慢查询日志文件
mysqldumpslow nh122-190-slow.log