MySQL—日志

news/2024/5/11 0:21:01

文章目录

    • 一、错误日志
    • 二、二进制日志
      • 2.1 介绍
      • 2.2 格式
      • 2.3 查看
      • 2.4 删除
    • 三、查询日志
    • 四、慢查询日志

一、错误日志

错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。

该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log 。查看日志位置:

show variables like '%log_error%';

在这里插入图片描述


查看该文件:
在这里插入图片描述
模拟一下错误:
我们可以通过 tail -f 实时查看一个文件内的更新信息
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
所以我们可以定位到这个文件auto.cnf
正常启动成功,错误日志中就不会有error信息了

二、二进制日志

2.1 介绍

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言,相当于就是建库建表语句)语句和 DML(数据操纵语言,就是增删改)语句,但不包括数据查询(SELECT、SHOW)语句。

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

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

show variables like '%log_bin%';

在这里插入图片描述
参数说明:

  • log_bin_basename:当前数据库服务器的binlog日志的基础名称(前缀),具体的binlog文件名需要再该basename的基础上加上编号(编号从000001开始)。
  • log_bin_index:binlog的索引文件,里面记录了当前服务器关联的binlog文件有哪些。
    在这里插入图片描述
    在这里插入图片描述

2.2 格式

MySQL服务器中提供了多种格式来记录二进制日志,具体格式及特点如下:

日志格式含义
STATEMENT基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。
ROW基于行的日志记录,记录的是每一行的数据变更。(默认)简单来说就是每条记录的+1,-1这种操作
MIXED混合了STATEMENT和ROW两种格式,默认采用STATEMENT,在某些特殊情况下会自动切换为ROW进行记录。
show variables like '%bin_format%';

在这里插入图片描述
如果我们需要配置二进制日志的格式,只需要在 /etc/my.cnf 中配置 binlog_format 参数即可。

vim /etc/my.cnf
## 添加或者修改
binlog_format=SEATEMENT## 重启mysqld
systemctl restart mysqld

2.3 查看

由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具 mysqlbinlog 来查看,具体语法:

mysqlbinlog [ 参数选项 ] logfilename

参数选项:

  • -d 指定数据库名称,只列出指定的数据库相关操作。
  • -o 忽略掉日志中的前n行命令。
  • -v 将行事件(数据变更)重构为SQL语句
  • -vv 将行事件(数据变更)重构为SQL语句,并输出注释信息

直接查看是看不到我们想看到的上一步update语句的,需要带上-v选项
在这里插入图片描述
这样就能看到了
在这里插入图片描述

2.4 删除

对于比较繁忙的业务系统,每天生成的binlog数据巨大,如果长时间不清除,将会占用大量磁盘空间。可以通过以下几种方式清理日志:

指令含义
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” 之前产生的所有日志

也可以在mysql的配置文件中配置二进制日志的过期时间,设置了之后,二进制日志过期会自动删除。
查看过期时间:

show variables like '%binlog_expire_logs_seconds%';

在这里插入图片描述
大概能保存300天:
在这里插入图片描述

三、查询日志

查询日志中记录了客户端的所有操作语句(所有的增删改查语句),而二进制日志不包含查询数据的SQL语句。默认情况下,查询日志是未开启的。

show variables like '%general%';

在这里插入图片描述

如果需要开启查询日志,可以修改MySQL的配置文件/etc/my.cnf文件,添加如下内容:

#该选项用来开启查询日志 , 可选值 : 0或者1 ;;; 0 代表关闭,1 代表开启
general_log=1
#设置日志的文件名 , 如果没有指定, 默认的文件名为 host_name.log
general_log_file=mysql_query.log

记住要重启mysqld服务

开启了查询日志之后,在MySQL的数据存放目录,也就是 /var/lib/mysql/ 目录下就会出现mysql_query.log 文件。之后所有的客户端的增删改查操作都会记录在该日志文件之中,长时间运行后,该日志文件将会非常大。

在这里插入图片描述
多出来了个查询日志文件:
在这里插入图片描述
tail -f 查看:
在这里插入图片描述

四、慢查询日志

慢查询日志记录了所有执行时间超过参数 long_query_time 设置值并且扫描记录数不小于min_examined_row_limit 的所有的SQL语句的日志,默认未开启。long_query_time 默认为10 秒,最小为 0, 精度可以到微秒。

如果需要开启慢查询日志,需要在MySQL的配置文件 /etc/my.cnf 中配置如下参数:

#慢查询日志
slow_query_log=1
#执行时间参数
long_query_time=2

意思是超过2s就算慢查询

默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。可以使用log_slow_admin_statements和更改此行为 log_queries_not_using_indexes,如下所述:

#记录执行较慢的管理语句
log_slow_admin_statements =1
#记录执行较慢的未使用索引的语句
log_queries_not_using_indexes = 1

在这里插入图片描述
注意会默认生成一个localhost-slow.log文件
在这里插入图片描述


http://wed.xjx100/news/201140.html

相关文章

常用在线工具,非常实用,快收藏起来!

作者丨黑蛋 今天给大家介绍一些常用到的在线工具,能方便我们的日常学习: 编码工具: AES加密解密:http://www.jsons.cn/aesencrypt/ DNA编码解码:https://web.expasy.org/translate/ 双16进制编码解码:ht…

注册ChatGPT时提示Oops! The email you provided is not supported

问题描述 今天本想出一个ChatGPT的注册与使用的教程,结果上来吃了个闭门羹。之前我通过微软账号登录验证是没有问题的,但这次想使用另一个微软账号,结果提示Oops! The email you provided is not supported(您提供的电子邮件不支…

操作系统基础知识介绍之系统安全术语解释

a Custom Performance Counter (PMC),自定义性能计数器:这是一种用于测量程序执行时的各种性能指标的工具,如指令数、分支数、缓存命中率等。它通过在编译器或硬件中插入一些特殊的指令或寄存器来实现。它可以用于优化程序性能、分析程序行为…

使用VSCode创建第一个ESP-IDF项目

1.在VSCode中安装ESP-IDF: 在 VS Code 中安装 ESP-IDF: 在-VS-Code-中安装-ESP-IDF、新建项目 安装过程中可能会遇到的问题: 解决-pip-安装第三方包时因-SSL-报错_pip-ssl error 在完全使用VSCode安装ESP-IDF环境后,不会存在ESP-IDF Termin…

SQL语言分类

数据查询语言DQL 数据操纵语言DML 数据定义语言DDL 数据控制语言DCL 1.数据查询语言DQL 数据查询语言Dor基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT FROM WHERE 2.数据操纵语言DML 数据操纵语言DM主要有三种形式…

YOLO V1-V3 简单介绍

目录 1. YOLO 2. YOLO V1 3. YOLO V2 4. YOLO V3 5. YOLO V3 SPP网络 5.1 Mosaic 图像增强 5.2 SPP 模块 5.3 CIou Loss 5.4 Focal loss 1. YOLO YOLO 是目标检测任务强大的算法,将目标检测的问题转换边界框和相关概率的回归问题,是目标检测…

【HTTPS加密】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1.HTTPS 是什么 1.1 运营商劫持 1.2 关于加密…

Java基础面试题突击系列3

👩🏻 作者:一只IT攻城狮 ,关注我不迷路 ❤️《java面试核心知识》突击系列,持续更新… 💐 面试必知必会学习路线:Java技术栈面试系列SpringCloud项目实战学习路线 📝再小的收获x365天…