在服务器运行过程中,会产生各种各样的日志,比如常规的查询日志、错误日志、二进制日志、redo 日志、Undo 日志等等,日志文件记录了影响 MySQL 数据库的各种类型活动。
常见的日志文件有:错误日志(error log)、慢查询日志(slow query log)、查询日志(query log)、二进制文件(bin log)。

错误日志

错误日志文件对 MySQL 的启动、运行、关闭过程进行了记录。遇到问题时应该首先查看该文件以便定位问题。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确的信息
用户可以通过下面命令来查看错误日志文件的位置:

  1. show variables like 'log_error'

当 MySQL 不能正常启动时,第一个必须查找的文件应该就是错误日志文件, 该文件记录了错误信息。

慢查询日志

慢查询日志可以帮助定位可能存在问题的 SQL 语句。

查询日志

查询日志记录了所有对 MySQL 数据库请求的信息,无论这些请求是否得到了正确的执行。

  • 默认文件名:主机名**.log**
  • MySQL 5.1 开始,可以将查询日志的记录放入 mysql 架构下的 general_log表


二进制日志(binlog)

二进制日志记录了对 MySQL 数据库执行更改的所有操作,若操作本身没有导致数据库发生变化,该操作可能也会写入二进制文件。但是不包括 select 和show 这类操作(因为这些操作对数据本身不会进行修改)
二进制日志的几种作用:

  • 恢复(recovery):某些数据的恢复需要二进制日志,例如,在一个数据库全备文件恢复后,用户可以通过二进制文件进行 point-in-time 的恢复
  • 复制(replication):其原理与恢复类似,通过复制和执行二进制日志使一台远程的 MySQL 数据库(一般称为 slave 或standby)与一台 MySQL 数据库(一般称为 master 或 primary)进行实时同步
  • 审计(audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击

log-bin 参数

该参数用来控制是否开启二进制日志,默认为关闭
如果想要开启二进制日志的功能,可以在 MySQL 的配置文件中指定
“name”为二进制日志文件的名称
如果不提供 name,那么数据库会使用默认的日志文件名(文件名为主机名, 后缀名为二进制日志的序列号),且文件保存在数据库所在的目录(datadir 下)
—启用/设置二进制日志文件(name 可省略) log-bin=name;
配置以后,就会在数据目录下产生类似于:

  • bin_log.00001 即为二进制日志文件;
  • bin_log.index 为二进制的索引文件,用来存储过往产生的二进制日志序号,通常情况下,不建议手动修改这个文件。

二进制日志文件在默认情况下并没有启动,需要手动指定参数来启动。开启这个选项会对 MySQL 的性能造成影响,但是性能损失十分有限。根据 MySQL 官方手册中的测试指明,开启二进制日志会使性能下降 1%。