Loading

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" 之前产生的所有日志
posted @ 2024-08-23 15:09  杨谖之  阅读(14)  评论(0编辑  收藏  举报