【MySQL】-日志系统

news2025/1/31 8:11:10

一、背景介绍

MySQL中提供了各种各样的日志,每一个日志在不同的阶段有不同的作用,对数据的一致性和正确性得到保障,为数据恢复也提供至关重要的作用,那今天我们一起来讨论讨论MySQL中的各个日志


在这里插入图片描述

二、正文

binlog:二进制日志,默认不开启

在这里插入图片描述

作用:
记录所有执行的DDL和DML语句(除了select、show等),便于数据同步以及恢复,哪怕数据丢失也能找到

归属:
mysql的server层

存储位置:
/etc/mysql/mysql.conf.d/

如何开启binlog日志记录?
可以在配置文件中添加或修改以下参数来开启binlog日志
在这里插入图片描述


errorlog:错误日志

作用:
操作出错放在这儿,能够帮助定位MySQL问题
在这里插入图片描述


slowlog:慢查询日志

作用:
给数据库的sql语句设置一个预期执行时间(long_query_time,单位:秒,默认10秒),当sql语句的执行时间超过了预期时间则把这条SQL语句的相关信息记录到慢查询日志中,方便定位哪些查询语句的执行效率低便于后期优化

记录内容:

  • 长时间运行的查询:如果一条查询花费大量时间来完成,那么它可能存在性能问题
  • 高I/O消耗的查询:当查询需要从磁盘上获取大量数据时,它可能对系统造成不必要的负载
  • 未使用索引的查询:没有正确地利用索引将导致全表扫描,效率较低 重复查询:同样的查询多次执行也可能是性能问题的原因之一
  • 错误配置的查询参数:如果查询参数设置不合理,比如内存限制、连接池等,都可能导致查询变得更加缓慢

如何开启慢查询日志?
查询是否开启慢查询日志
在这里插入图片描述
MySQL默认是没有开启慢查询日志,需要在(/et/my.cnf)中配置

使用场景:
预热数据、过大文件、日志记录、延迟加载数据(同步)


relaylog:中继日志

作用:
在进行主从复制的过程中,需要把主服务器的binlog文件内容同步到从服务的relaylog日志从而保持主从服务器的数据一致性。从服务器读取relaylog中的记录并对数据进行更新


归属:
从服务器
参考网上图片


undolog:回滚日志

作用:
记录事务的insert、update、delete操作,记录历史版本的数据,编写的sql语句会生成相反的操作,比方说事务在执行insert语句的时候日志会记录delete,这样的好处是当事务执行失败或者要回滚时,能够快速利用undolog中的信息将数据回滚到修改前的状态


归属:
innodb存储引擎内部


redolog:前滚日志

作用:
当数据被修改时,所有的修改会先写入到redolog日志中,在更新到Buffer Pool,保证了数据不会因为一些外部原因(如:MySQL宕机)而导致数据丢失;当事务在提交的时候,将redolog进行刷盘,如果Mysql宕机或者重启时也可以读取redolog中的数据,从而对数据进行恢复


归属:
innodb存储引擎内部

在这里插入图片描述

内存写磁盘的时候是随机读写的,而由内存写入redolog再写入磁盘的过程是append追加的方式顺序读写的,可以通过redolog机制恢复数据,也叫write ahead log


在前文中讲binlog日志时当进行DDL和DML语句时会写入记录到日志文件,修改数据时会写入记录到redolog日志,屏幕前的你思考一个问题:binlog和redolog同时都会记录数据,那如何保证文件中数据的一致性呢?
这就引申出了两阶段提交的概念

两阶段提交

什么时两阶段提交?
将redo log的写入拆成了两个步骤prepare 和commit,这就是两阶段提交
摘自网上图片


当修改数据时:
先写入redolog日志,给redolog添加一个prepare状态
写入binlog日志
再写redolog,修改状态为commit


数据恢复时:
读取redolog,发现状态为prepare,处于prepare状态的数据是不能用的,
于是读取binlog,查看binlog有没有与之相匹配的数据:
没有,把redolog这条数据删除掉,回顾记录
有,自动把redolog的状态改成commit,更新数据


三、总结

针对各个日志做了简单的介绍,内部更为细节的内容还需要我们结合MySQL的执行流程、内存和磁盘的过渡等微观去详细了解,宏观到微观。



参考博客

https://blog.csdn.net/J080624/article/details/128591262

如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞+收藏+评论脚印支持一下博主~

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

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

相关文章

Linux C/C++ 分析网络流量(十六进制TCP数据包分析)

在分析TCP数据包时,理解TCP协议的工作原理和报文格式是关键。TCP是一种面向连接的、提供可靠的、端到端的字节流传输服务。其头部结构包括源端口、目标端口、序列号、确认应答号等字段。序列号是在建立连接时由计算机生成的随机数作为初始值,每发送一次数…

人工智能学习4(特征选择)

编译工具:PyCharm 有些编译工具在绘图的时候不需要写plt.show()或者是print就可以显示绘图结果或者是显示打印结果,pycharm需要(matplotlib.pyplot) 文章目录 编译工具:PyCharm 特征选择嵌入法特征选择练习&#xff…

K8S客户端二 使用Rancher部署服务

Rancher容器云管理平台 本博客中使用了四台服务器,如下 rancher服务器k8s-masterk8s-worker01k8s-worker02 一、主机硬件说明 序号硬件操作及内核1CPU 4 Memory 4G Disk 100GCentOS72CPU 4 Memory 4G Disk 100GCentOS73CPU 4 Memory 4G Disk 100GCentOS74CPU 4 …

如何确定短线的买入卖出时机?

短线投资制胜的一个关键能力,就是精准地找到买入卖出时机。那么,怎么样才能获得这种关键能力呢? 在这节课里,我们将给大家梳理一下常见的短线买入卖出时机,并通过案例讲解帮助大家理解。话不多说,赶紧进入主…

[论文阅读]Generalized Attention——空间注意力机制

Generalized Attention An Empirical Study of Spatial Attention Mechanisms in Deep Networks 论文网址:Generalized Attention 论文代码:文章最后有GeneralizedAttention的实现代码 简读论文 本文主要研究了深度学习网络中的注意力机制。作者们从不…

VR 实现 Splash Screen 效果

文章目录 背景官方实现逆向分析 背景 手机 App 在实现 Splash Screen 的时候,目前都有成熟的方案可以参考,但是在做 VR 开发时,要如何实现一个 App 自己的 Splash Screen ,下面是我们基于 PICO & OCULUS 进行业务开发时经过探…

Postman被低估的功能 — 自动化接口测试

| 背景 该篇文章针对已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境: Window 7 - 64 Postman 版本(免费版):Chrome App v5.5.3 不同版本页面 U…

Hdoop学习笔记(HDP)-Part.17 安装Spark2

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

Mac卸载、安装Python

卸载 说明 对于删除 Python,我们首先要知道其具体都安装了什么,实际上,在安装 Python 时,其自动生成: Python framework,即 Python 框架;Python 应用目录;指向 Python 的连接。 …

node.js-连接SQLserver数据库

1.在自己的项目JS文件夹中建文件:config.js、mssql.js和server.js以及api文件夹下的user.js 2.在config.js中封装数据库信息 let app {user: sa, //这里写你的数据库的用户名password: ,//这里写数据库的密码server: localhost,database: medicineSystem, // 数据…

Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能

原创/朱季谦 最近通过Vue Element ui实现了动态表单功能,该功能还包括了动态表单新增行、删除行、动态表单验证、动态表单提交功能,趁热打铁,将开发心得记录下来,方便以后再遇到类似功能时,直接拿来应用。 简化的页…

C-语言每日刷题

目录 [蓝桥杯 2015 省 A] 饮料换购 题目描述 输入格式 输出格式 输入输出样例 # [蓝桥杯 2023 省 A] 平方差 题目描述 输入格式 输出格式 输入输出样例 说明/提示 【样例说明】 [NOIP2001 普及组] 数的计算 题目描述 输入格式 输出格式 输入输出样例 说明/提示 样例 1 解释 数据…

Halcon tiff 点云读取以及平面矫正

一、读取tiff 图 dev_close_window () dev_open_window (0, 0, 512, 512, black, WindowHandle)xResolution:0.0025 yResolution:0.0025 zResolution:0.001 read_image (IntputImage, C:/Users/alber/Desktop/2023-08-15_16-38-24-982_/Sta5_002.tif) zoom_image_factor (Intpu…

Ext4文件系统解析(二)

1、前言 想要了解EXT文件系统的工作原理,那了解文件系统在磁盘上的分布就是必不可少的。这一节主要介绍EXT文件系统硬盘存储的物理结构。 由于当前主流的CPU架构均采用小端模式,因此下文介绍均已小端模式为准。 2、超级块 2.1 属性 下表列举出超级块…

docker-速通

1.命令-镜像操作 docker pull nginx #下载最新版 docker pull nginx:1.20.1 #下载指定版本 镜像名:版本名(标签) docker images #查看所有镜像 # 如果只写镜像名实际就是redis redis:latest 记住这个不是命令 docker rmi 镜像名:版本号/镜像id…

Java Throwable

如图展示了 Java 整个异常体系的关系。 Throwable 的 Java 异常体系的基类, 他的直接子类有 Error 和 Exception 2 个。 1 Error Error 表示的是由于系统错误, Java 虚拟机抛出的异常, 例如 Java 虚拟机崩溃, 内存不够等, 这种情况仅凭程序自身是无法处理的, 在程序中也不会…

第十一节HarmonyOS 常用容器组件1-Row与Column

Column&Row组件的使用 1、概述 容器组件是一种比较特殊的组件,它可以包含其他的组件,而且按照一定的规律布局,帮助开发者生成精美的页面。容器组件除了放置基础组件外,也可以放置容器组件,通过多层布局的嵌套&am…

详解Spring工厂是如何获取Aop中的代理对象的

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

如何选择适合的光电传感器与 STM32 微控制器进行接口设计

本文介绍了如何选择适合的光电传感器与 STM32 微控制器进行接口设计的方法。首先我们将介绍一些选择光电传感器的关键因素,包括测量范围、响应时间、分辨率和输出类型。然后我们将介绍如何根据所选传感器的特性进行硬件连接和接口设计。最后,我们将提供示…

区间合并笔记

文章目录 什么是区间合并怎么做区间合并AcWing 803. 区间合并思路解析my - CODEdalao の CODE 什么是区间合并 区间合并是指给定多个区间,让你将重合的区间合并为一个区间 怎么做区间合并 区间合并类问题大多三个办法: 按左端点排序按右端点排序按左右…