在mysql中,有4种不同的日志,分别是错误日志、二进制日志(binlog日志,归档日志)、查询日志和慢查询日志,这些日志记录着数据库在不同方面的踪迹。

1)错误日志

它记录了当mysql启动和停止时,以及服务器在运行过程种发生任何严重错误时的相关信息,当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。
该日志默认开启的。

5.6版本,默认存放mysql/lib/下
5.7版本,默认存放mysql/data/下。**

1.1)查看日志位置命令

  1. show variables like 'log_error';

image.png

1.2)查看日志内容

实时查看文件末尾错误信息

tail -f /usr/local/mysql/data/mysqld.local.err

2)二进制日志

二进制日志binlog 记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,mysql的主从复制,就是通过该binlog实现的。

二进制日志,默认情况下是没有开启的,需要到mysql的配置文件中开启,并配置mysql日志的格式。

配置文件位置:/usr/my.cnf
日志存放位置:配置时,给定文件名但是没有制定路径,日志默认写入mysql的数据目录。

#配置开启binlog日志,日志的文件前缀为mysqlbin->生产的文件名:mysqlbin.00001,mysqlbin.00002
log_bin=mysqlbin

#配置二进制日志的格式
binlog_format=STATEMENT

2.1)日志格式

STATEMENT

该日志格式在日志文件中记录的都是SQL语句(statement),每一条对数据进行修改的SQL都会记录在日志文件中,通过mysql提供mysqlbinlog工具,可以清晰的查看到每条语句的文本。主从复制的时候,从库(slave)会将日志解析为原文本,并在从库重新执行一次。

ROW

该日志格式在日志文件中记录的是每一行的数据变更,而不是记录SQL语句。
比如,执行SQL语句:update tb_book set status=’1’;
如果是STATEMENT格式:在日志中记录一行SQL文件;
如果是ROW:由于是对全表进行更新,也就是每一行记录都会发生变更,ROW格式的日志中会记录每一行的数据变更。

MIXED

目前mysql默认的日志格式,混合了statement和row两种格式。默认情况采用statement,但是在一些特殊情况下采用row来进行记录。mixed格式尽量利用两种模式的优点,而避开他们的缺点。

2.2)日志读取

知识点

变换形式展示数据
image.png