MySQL日志
MySQL 日志
MySQL 日志类型
MySQL 日志有以下几种类型:
- 错误日志:用于记录 MySQL 服务器启动、运行和停止时发生的错误的相关信息。
- 二进制日志:记录了所有 DDL 和 DML 语句。
- 查询日志:查询日志记录了客户端所有操作语句。
- 慢查询日志:慢查询日志记录了所有执行时间超过参数
long_query_time
设定值并且扫描记录数不小于min_examined_row_limit
的所有 SQL 语句的日志。
错误日志
错误日志记录了 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
作用:当数据库出现任何故障导致无法使用时,建议查看此日志。
错误日志默认开启,存放目录 /var/log/
,文件名为 mysqld.log
。
查看错误日志相关参数:show variables like "%log_error%;"
二进制日志
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。
作用:
- 灾难时的数据恢复;
- MYSQL的主从复制。
在 MYSQL8 版本中,二进制日志默认开启。
查看二进制日志相关参数:show variables like "%log_bin%;"
log_bin_basename
:当前数据库服务器 binlog 日志文件名前缀,具体的 binlog 文件名是在前缀基础上添加编号后缀(从000001开始),见图1、图2。log_bin_index
:binlog 的索引文件,用于记录了当前服务器关联的 binlog 有哪些,见图3。
图1-二进制日志相关参数
图2-二进制日志文件
图3-二进制日志索引文件
为什么我的二进制日志是从000009开始的?
二进制日志的格式
MYSQL 提供多种格式用于记录二进制日志:
- STATEMENT:基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。
- ROW:基于行的日志记录,记录的是每一行的数据变更。(默认)
- MIXED:混合了 STATEMENT 和 ROW 两种格式,默认采用 STATEMENT,在某些特殊情况下会自动切换为 ROW 进行记录。
查看当前二进制日志格式:show variables like '%binlog_format';
查看二进制日志
NAME
mysqlbinlog - utility for processing binary log files
SYNOPSIS
mysqlbinlog [options] log_file ...
删除二进制日志
有以下方法清理二进制日志:
reset master
:删除全部 binlog 日志,删除之后,日志编号,将从 binlog.000001重新开始purge master logs to 'binlog.*'
:删除 * 编号之前的所有日志purge master logs before 'yyyy-mm-dd hh24:mi:ss'
:删除日志为 "yyyy-mm-dd hh24:mi:ss" 之前产生的所有日志