MySQL日志部分-学习笔记

发布于:2025-08-11 ⋅ 阅读:(15) ⋅ 点赞:(0)

错误日志

定义与作用

错误日志是 MySQL 中最重要的日志之一,记录内容包括:

  • mysqld 启动和停止时的信息
  • 服务器运行过程中发生严重错误时的相关信息
  • 应用场景:数据库因故障无法正常使用时,建议优先查看此日志
日志配置
  • 开启状态:默认开启

  • 存放目录:默认 /var/log/

  • 日志文件名:默认 mysqld.log

  • 查看日志位置的 SQL 语句:

    show variables like '%log_error%'
    

二进制日志

介绍

二进制日志(BINLOG)记录了所有的 **DDL(数据定义语言)语句和 DML(数据操纵语言)**语句,但不包括数据查询(SELECT、SHOW)语句。

作用:
①. 灾难时的数据恢复;
②. MySQL 的主从复制。

在 MySQL 8 版本中,默认二进制日志是开启着的,涉及到的参数如下:

show variables like '%log_bin%'
日志格式

MySQL 服务器提供多种二进制日志记录格式,具体如下:

日志格式 含义
STATEMENT 基于 SQL 语句的日志记录,记录对数据修改的 SQL 语句到日志文件中
ROW 基于行的日志记录,记录每一行的数据变更(默认格式 )
MIXED 混合 STATEMENT 和 ROW 两种格式,默认用 STATEMENT,特殊情况自动切换为 ROW 记录
show variables like '%binlog_format%';
日志查看

因二进制日志以二进制存储,无法直接读取,需用 mysqlbinlog 工具查看,语法:

mysqlbinlog [参数选项] logfilename
参数选项说明
参数 含义
-d 指定数据库名,仅列出该数据库相关操作
-o 忽略日志前 n 行命令
-v 将行事件(数据变更)重构为 SQL 语句
-vv 将行事件(数据变更)重构为 SQL 语句,且输出注释信息
日志删除

针对业务系统 binlog 数据量大、占用磁盘空间的问题,提供 3 种清理方式:

指令 含义
reset binary logs 删除全部 binlog 日志,日志编号从 binlog.000001 重新开始
purge binary logs to ‘binlog.xxxxxx’ 删除指定编号(xxxxxx)之前的所有 binlog 日志
purge binary logs before 'yyyy-mm-dd hh24:mi:ss' 删除指定时间(yyyy-mm-dd hh24:mi:ss)之前产生的所有 binlog 日志

也可以在MySQL的配置文件中配置二进制的过期时间,设置之后,二进制文件会自动删除

show variables like '%binlog_expire_logs_seconds%';

查询日志

查询日志中记录了客户端的所有操作语句,而二进制日志中不包含查询数据的SQL语句。默认情况下,查询日志是未开启的。如果需要开启查询日志,可设置以下配置:

show variables like '%general%'
vim /etc/mysql/my.cnf
#更改配置
[mysqld]
general_log = 1
general_log_file = mysql_query.log
#重启MySQL
sudo systemctl restart mysql

慢查询日志

慢查询日志记录满足以下条件的 SQL 语句:

  • 执行时间超过 long_query_time 设置值
  • 扫描记录数不小于 min_examined_row_limit

默认未开启,long_query_time 默认 10 秒(最小可设为 0,精度支持微秒 )

# 慢查询日志
slow_query_log=1  

# 执行时间参数(单位:秒,示例设为 2 秒)
long_query_time=2  
慢查询日志默认行为与扩展配置

默认情况下,慢查询日志存在以下限制:

  • 不记录管理语句(如 ALTERCREATE 等操作)
  • 不记录未使用索引的查询语句
扩展配置项(修改 MySQL 配置文件生效)

通过以下参数可调整默认行为:

配置项 作用说明
log_slow_admin_statements 开启后,记录执行较慢的管理语句
log_queries_not_using_indexes 开启后,记录执行较慢的未使用索引的查询语句
# 记录执行较慢的管理语句(1 开启,0 关闭)
log_slow_admin_statements = 1  

# 记录执行较慢的未使用索引的语句(1 开启,0 关闭)
log_queries_not_using_indexes = 1  

网站公告

今日签到

点亮在社区的每一天
去签到