「这是我参与2022首次更文挑战的第19天,活动详情查看:2022首次更文挑战」。
MySQL 运行过程中的一些信息会被记录在日志文件中,本文将简要介绍 MySQL 中的日志文件的类型及其作用。
日志文件种类
常见的日志文件有:
- 错误日志(ErrorLog)
- 二进制日志(Binary Log)
- 中继日志(Relay Log)
- 全查询日志(General Query Log)
- 慢查询日志(Slow Query Log)
- 事务日志
下面一一介绍这些日志的作用。
错误日志
错误日志记录了 MySQL 在启动、运行和关闭过程中的重要信息。不仅包括了出错信息,而且还记录了一些警告信息以及正确信息。
在遇到问题的时候,第一时间应该查看错误日志文件。该文件为文本文件,因此可以通过文本编辑器直接查看其内容。
二进制日志 与 中继日志
二进制日志记录了对数据库进行变更的所有操作及其执行的时间等信息。对于不会对数据库造成修改的操作,如 select
和 show
,则不会进行记录。
二进制日志是默认开启的,其主要作用有两个:一是用于恢复,在全库文件恢复后,可以在此基础上通过二进制日志进行恢复;二是进行复制,与恢复类似,可以通过复制和执行二进制文件,使主从数据库数据同步。
中继日志是从主服务器复制过来的二进制日志,可以用于从数据库的数据恢复。
全查询日志
二进制日志只会记录可能更改数据库数据的操作,全查询日志则记录了所有对数据库请求的信息,包括了 select
和 show
,而且这些请求无论是否被正确执行,都会被记录下来。
在默认情况下,全查询日志是不开启的。当需要该日志的信息时,可以使用 set global general_log = on;
开启这一日志。
慢查询日志
从名字可以看出,这一日志用来记录慢查询请求,也就是执行时间超过一定阈值的请求。具体的阈值由 long_query_time
设置,默认为 10 ,即 10秒。
与全查询日志相似,在默认情况下,慢查询日志也是不开启的。当需要该日志的信息时,可以使用 set global slow_query_log = on;
开启这一日志。
事务日志
事务日志是 InnoDB 等支持事务的存储引擎,在执行事务时产生的日志。
在存储引擎执行事务时,为了保证 ACID 特性,更改的数据不会立即写到数据文件中,而是先写到事务日志。