MySQL — 日志、错误日志、二进制日志、查询日志、慢查询日志

news2024/12/26 3:18:11

文章目录

  • 日志
  • 一、错误日志
  • 二、二进制日志
    • 2.1 介绍
    • 2.2 格式
    • 2.3 查看二进制日志
      • 2.3.1 基于行的二进制日志格式
      • 2.3.2 基于语句的二进制日志格式
    • 2.4 日志删除
  • 三、 查询日志
  • 四、慢查询日志

日志

一、错误日志

​ 错误日志是MySQL中最重要的日志之一。

​ 记录了当MySQLd启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。

该日志是默认开启的,默认存放目录 mysqld.log

查看日志位置

show variables like '%log_error%';

log_error记录的就是错误日志关联的文件是哪个,我这里关联的是D:\Sort\Mysql\mysql-8.0.32-winx64\data\zhangjingqi-pc.err

image-20230530172825190

文件打开后如下图所示。当mysql服务器出现异常之后,就会在此日志文件下记录

image-20230530173011710

二、二进制日志

​ 二进制日志(BINLOG)记录了所有的DDL(数据库表)语句和DML(增删改)语句,但不包括数据查询语句(Select、Show)。

2.1 介绍

作用

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

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

show variables like '%log_bin%';

image-20230530200401194

  • log_bin

二进制文件是开是关

  • log_bin_basename

当前数据库服务器的binlog日志的基础名称(前缀),具体的binlog文件名需要再该basename的基础上加上编号(编号从000001开始)。

image-20230530201014574

  • log_bin_index

binlog的索引文件,里面记录了当前服务器关联的binlog文件有哪些。

image-20230530201035591

2.2 格式

查看日志格式

show variables like '%binlog_format%';

image-20230530202129611

三种格式

  • STATEMENT

​ 基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。

  • ROW

基于行的日志记录,记录的是每一行的数据变更。(默认)

  • MIXED

混合了STATEMENT和ROW两种格式,默认采用STATEMENT,在某些特殊情况下会自动切换为ROW进行记录。

2.3 查看二进制日志

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

具体语法

mysqlbinlog [ 参数选项 ] logfilename

参数选项

-d 指定数据库名称,只列出指定的数据库相关操作。

-o 忽略掉日志中的前n行命令。

-v 将行事件(数据变更)重构为SQL语句

-vv (两个v,不是w)将行事件(数据变更)重构为SQL语句,并输出注释信息

2.3.1 基于行的二进制日志格式

示例

进入到安装mysql的bin层 D:\Sort\Mysql\mysql-8.0.32-winx64\bin,执行下面的指令

mysqlbinlog  --no-defaults    ../data/binlog.000021

执行后会出现下面的内容,是看不到执行的SQL语句的

如果是基于行的日志格式,我们需要执行参数选项,将行数据重构为SQL语句

image-20230530204330135

将行数据重构为SQL语句

mysqlbinlog  --no-defaults  -v ../data/binlog.000021

–no-defaults作用:

mysqlbinlog命令使用时报错 unknown variable ‘default-character-set=utf8mb4’ 的解决办法_aben_sky的博客-CSDN博客

​ 解决unknown variable 'default-character-set=utf8mb4错误

2.3.2 基于语句的二进制日志格式

需要将binlog_format设置为STATEMENT

image-20230530212511011

重启服务

systemctl restart mysqld

查看是否修改

show variables like '%binlog_format%';

如下图所示,修改成功

image-20230530212759817

而且我们修改了二进制日志格式后,又重新生成了二进制日志文件

image-20230530213307510

执行修改语句

update tb_user set age = age+1;

查看二进制文件,不需要加-v,因为statement日志格式下记录的就是SQL语句

mysqlbinlog  --no-defaults  ../data/binlog.000022

也可以在命令行窗口中找到对应的SQL语句

image-20230530213920559

2.4 日志删除

指令

  • reset master

删除全部 binlog 日志,删除之后,日志编号,将从 binlog.000001重新开始

  • purge master logs to ‘binlog.*’

删除 * 编号之前的所有日志,比如下面就是删除编号000018之前的文件,但是18还会在

purge master logs to 'binlog.000018'
  • purge master logs before ‘yyyy-mm-dd hh24:mi:ss’

删除日志为 “yyyy-mm-dd hh24:mi:ss” 之前产生的所有日志

  • 设定过期时间
show variables like '%binlog_expire_logs_seconds%'; 

如果想要修改,在my.ini文件中配置即可

image-20230530214424673

三、 查询日志

查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句

默认情况下,查询日志是未开启的。

开启查询日志

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

image-20230530220217006

重启服务,并查看是否开启

show variables like '%general%';

内容确实是刚刚配置的

image-20230530220434440

四、慢查询日志

之前的文章:MySQL——存储引擎与索引应用_

有对慢查询日志的分析

慢查询日志记录了所有执行时间超过参数 long_query_time 设置值并且扫描记录数不小于min_examined_row_limit 的所有的SQL语句的日志,默认未开启

long_query_time 默认为10 秒,最小为 0, 精度可以到微秒。

在配置文件中进行配置

# 开启MySQL慢日志查询开关
slow_query_log=1
# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long_query_time=2

查看慢日志存放在哪里,当然我们也可以重新配置

show variables like '%slow%';

image-20230530223628849

执行一个比较慢的SQL语句,里面有200万条记录

SELECT * FROM tb_user2;

查看慢查询日志文件,但是时间我感觉有时区的问题,我这里是东八区,22:43,刚好相差八个小时

image-20230530224345203

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么Facebook的转化率要远远低于论坛?

在数字化时代,社交媒体平台如Facebook和论坛都是企业推广和营销的重要渠道。然而,相对于论坛而言,Facebook的转化率明显较低。以下是一些解释: 1.用户意图和参与度的差异 论坛用户更具明确的意图和高度参与度。他们加入论坛是为了…

智能家居家电上应用的触摸芯片有哪些?

电容式触摸芯片,具有灵敏度高、抗干扰能力强,防水防尘、高可靠性等优点已逐步替代传统机械式按钮,广泛应用于家电、智能家居、消费电子、工控等领域。 触摸感应可以穿透绝缘材质检测人体手指带来的电荷移动,从而判断人体手指触摸…

从申请到调用:空号检测 API 使用教程

引言 在当今数字化的时代,手机号码成为了我们日常生活和商业活动中重要的联系方式之一。然而,随着电话号码的泛滥和变动性,验证手机号码的有效性变得越来越重要。 本文将深入探讨空号检测API 的背景和应用场景,介绍如何使用该 A…

STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程

iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。 开发板既有A7核&#xff…

ROS:VScode开发话题(msg)、服务(srv)、动作(action),解决 无法打开源文件

一.解决 无法打开源文件 出错原因:系统没有找到.h文件对应的路径。 在编写完msg、srv、action文件后,要进行编译(catkin_make) . 编译之后,msg、srv、action会生成相应的.h文件。 其对应的.h文件目录在devel/includ…

一款可发布236T全球影像,构建“离线版地球”的GIS产品

概述 《水经注地图服务(WeServer)》是一款可快速发布全国乃至全球海量卫星影像的地图发布服务产品,该产品完全遵循OGC相关协议标准,是一个基于若干项目成功经验总结的产品。它可以轻松发布100TB级海量卫星影像,从而使…

Poco 观察者模式(Observer Pattern) 订阅和发布某个感兴趣的通知, Observer和Notification

Poco 观察者模式(Observer Pattern) 订阅和发布某个感兴趣的通知, Observer和Notification flyfish 先写一个实例代码 #include "Poco/NotificationCenter.h" #include "Poco/Notification.h" #include "Poco/Ob…

Jetpack Hilt 框架的基本使用

什么是 Hilt? Hilt 是一个功能强大、用法简单的依赖注入框架,于 2020 年加入到 Jetpack 家族中。它是 Android 团队联系了 Dagger2 团队,一起开发出来的一个专门面向 Android 的依赖注入框架。相比于 Dagger2,Hilt 最明显的特征就…

Flutter 笔记 | Flutter 核心原理(四)绘制流程

Vsync 机制 在分析首帧渲染的过程中,可以发现Render Tree的渲染逻辑(handleDrawFrame方法)是直接执行的,但是后续每一帧的渲染都是Framework的主动调用导致的吗?实际上并非如此,也不能如此。试想一下&…

【017】C++ 指针变量详解,理解指针变量

C 指针变量详解 引言一、内存概述二、指针变量2.1、地址和指针变量的关系2.2、定义指针变量2.3、指针变量的初始化2.4、指针类型2.5、案例2.6、注意事项 三、数组元素的指针3.1、概述3.2、在使用中 [ ] 就是 *()的缩写3.3、指向同一数组的元素的两个指针变量间的关系 四、字符串…

6月销量狂欢季:测评自养号助力,引爆跨境电商销量!

随着夏季的到来,跨境电商卖家们迎来了一个极佳的销售机会。6月作为夏季的重要节点,各种活动和节日都为卖家们提供了引流和销售的良机。然而,要真正实现销量的爆发,单纯依靠传统的营销手段可能难以达到预期的效果。在这篇文章中&am…

AI+边缘,是如何加速制造转型的?

在现代工业中,提起智慧工厂、智能制造有一个经久不衰的话题,那便是IT和OT的融合。 IT(Information Technology)部门专注于处理数据,整个业务系统需要它来维持运营。而OT(Operation Technology)…

2023智源大会议程公开 |智能的物质基础专题论坛

6月9日,2023北京智源大会,将邀请这一领域的探索者、实践者、以及关心智能科学的每个人,共同拉开未来舞台的帷幕,你准备好了吗?与会知名嘉宾包括,图灵奖得主Yann LeCun、图灵奖得主Geoffrey Hinton、OpenAI创…

基于OA的采购系统和专业的招标采购管理系统区别

当前采购信息化百家争鸣,既有初级版的审批和记录电子化,也有中级版的业务全流程电子化,还有升级版的数智化创新形式(如电商平台、智能评标、供应商风险评估、专家行为画像、大数据统计分析等)。 近年来,招标…

Zotero文献在word中的引用

前提 确保你的word中有Zotero插件。如下图示: 具体操作 Step01 Zeroto中下载样式 在Zotero中添加相应的文献样式,具体如下: 打开Zotero“编辑”中的首选项,打开“引用”,从“获取更多样式”中搜寻你想要的文献样…

JAVA开发(手工处理数据库表数据的一些示例算法)

背景: 在项目开发中,有时候需要手动处理一下数据库表的数据。涉及到数据得到备份、恢复,清洗,计算,合并等操作。 举例记录一下最近对数据的一些处理过程。 1、对数据表进行数据量统计 select count(*) from table…

API接口的重要性和好处|附加淘宝api接口展示案例|商品数据采集演示

随着互联网的发展,API接口已经成为许多企业进行信息交流和数据管理的重要工具。通过API接口,企业之间能够快速、可靠地进行数据传输和信息共享,从而提高了企业的生产效率和服务质量。以下是API接口的重要性和好处的文章: 1.提高生…

Zabbix从入门到精通以及案例实操系列

1、Zabbix入门 1.1、Zabbix概述 Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和…

5.2.2 IP地址的分配和使用

5.2.2 IP地址的分配和使用 我们已经学习了分类的IP地址,我们就来一起学习一下在实际的应用中IP地址是如何分配和使用的。在最初的IP地址编址方案中,因特网的每个物理网络都必须被分配一个唯一的网络地址,该网络上的主机每个主机都使用该网络…

Jenkins——maven 插件配置

文章目录 一、Maven 的集成二、在执行job的机器上安装好maven三、下载 maven 插件四、配置全局工具五、Maven 相关使用1、新建 job2、自由风格 job 中命令行使用 mvn 命令3、构建操作 一、Maven 的集成 在 Jenkins 上构建 Java 项目时需要使用 Maven 来进行构建打包 二、在执…