mysql 日志文件
日志文件记录了影响 mysql 数据库的各种类型活动,mysql 中常见的日志文件主要包括以下 4 种:
- 错误日志
- 二进制日志
- 慢查询日志
- 查询日志
这些日志文件可以帮助我们对mysql数据库的运行状态进行诊断,从而更好的进行数据库层面的优化。
错误日志
错误日志文件对 mysql 的启动,运行,关闭过程进行了记录。错误日志不仅记录了所有的错误信息,也记录了一些警告信息或者正确的信息。可以通过以下方式 找到错误日志的路径:
1 | mysql> show variables like 'log_error'; |
可以看到错误日志的全路径,这里我本机没有做过调整,所以默认使用的是主机名作为错误日志的文件名。如果你的 mysql 数据库不能正常启动,可以第一时间查找的文件就是错误日志文件,这里可能会记录相关的错误日志,通过这个日志来找到不能正常启动的原因。下面截取部分日志:
1 | 2021-05-06T08:57:03.359102Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. |
慢查询日志
long_query_time
mysql 启动时可以设定一个阈值,mysql 会将运行时间超过该值的所有 sql语句都记录到慢查询日志中。如下:
1 | mysql> show variables like 'long_query_time'; |
设置 long_query_time 阈值之后,mysql 数据库会记录运行时间超过该阈值的所有 sql 语句,但是对于时间刚好等于 long_query_time 值的不会被记录。从 mysql 5.1 开始,long_query_time开始以微秒记录 sql 语句运行的时间,在此之前都是用秒作为单位记录的。
log_queries_not_using_indexes
这是另一个和慢查询有关的参数,这个参数表示,如果运行的 sql 语句没有使用索引,则 mysql 数据库同样会将这条 sql 语句记录到慢查询日志文件。
1 | mysql> show variables like 'log_queries_not_using_indexes'; |
log_throttle_queries_not_using_indexes
1 | mysql> show variables like 'log_throttle_queries_not_using_indexes'; |
mysql 5.6.5 版本开始新增了 log_throttle_queries_not_using_indexes 这个参数,用来表示每分钟允许记录到 slow log 的且未使用索引的 sql 语句次数。该值默认是0,表示没有限制。在生产环境,如果没有使用索引,此类 sql 语句会频繁的被记录到 slow log,从而导致 slow log 文件不断增加,因此可以通过配置该值进行控制。