【MySQL】-日志系统

一、背景介绍

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MIT线性代数笔记-第26讲-对称矩阵及正定性

目录 26.对称矩阵及正定性打赏 26.对称矩阵及正定性 实对称矩阵的特征值均为实数,并且一定存在一组两两正交的特征向量 这对于单位矩阵显然成立 证明特征值均为实数: ​    设一个对称矩阵 A A A,对于 A x ⃗ λ x ⃗ A \vec{x} \lambda…

基于YOLOv7算法和Caltech数据集的高精度行人目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法和Caltech数据集的高精度行人目标检测系统可用于日常生活中检测与定位行人目标,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算…

python核心阶段(五)—— 面向对象三大特性

1.封装 概念:封装主要是指将一些属性和相关方法封装在一个对象中,对外隐藏内部具体实现细节 作用:1)使用起来更加方便,类似于提供了一个工具箱 2)保证数据的安全(设置私有属性) 3&am…

python3.5安装教程及环境配置,python3.7.2安装与配置

大家好,小编来为大家解答以下问题,python3.5安装教程及环境配置,python3.7.2安装与配置,现在让我们一起来看看吧! python 从爬虫开始(一) Python 简介 首先简介一下Python和爬虫的关系与概念&am…

MagicAnimate

简介 新加坡国立大学 Show 实验室和字节联合做了一项类似的研究。他们提出了一个基于扩散的框架 MagicAnimate,旨在增强时间一致性、忠实地保留参考图像并提升动画保真度。并且,MagicAnimate 项目是开源的,目前推理代码和 gradio 在线 demo …

好莱坞明星识别

一、前期工作 1. 设置GPU from tensorflow import keras from tensorflow.keras import layers,models import os, PIL, pathlib import matplotlib.pyplot as plt import tensorflow as tfgpus tf.config.list_physical_devices("GPU")if gpus:gpu0 …

MySQL数据备份

一、逻辑备份 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度较慢&…

周星驰 互联网3.0 团队下个月将上线独立 App

2023年12月7日,新浪科技报道指出,周星驰旗下的互联网3.0团队透露,Moonbox,这家周星驰创立的互联网3.0初创公司,计划在明年1月份完成Moonbox App的上线,届时该应用将免费向用户提供服务。 目前,…

外包干了三年,我承认我确实废了……

没错,我也干过外包,一干就是三年,三年后,我废了…… 虽说废的不是很彻底,但那三年我几乎是出差了三年、玩了三年、荒废了三年,那三年,我的技术能力几乎是零成长的。 说起这段三年的外包经历&a…

git 克隆无权限-重新输入账号密码

克隆项目代码时提示没有权限,有可能是没有登录账号,也可能是账号密码改了,运行下面指令,然后重新克隆项目,下载的时候会让你重新输入账号密码,则克隆成功 git config --global credential.helper cache 参考…

043:vue项目一直出现 sockjs-node/info?t=XX的解决办法

第043个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

Spark大数据集群日常开发过程遇到的异常及解决思路汇总

原创/朱季谦 在开发Spark任务过程中,遇到过不少新人经常可能会遇到的坑,故而将这些坑都总结了下来,方便日后遇到时,可以快速定位解决,壁面耗费过多时间在查找问题之上。 一、出现java.lang.IllegalAccessError: tried…

AGM CPLD 应用指南

AGM的部分料号跟Altera 硬件Pin to Pin兼容,映射关系表如下: EPM240T100CxN—>AG256SL100(CPLD) EPM240T100IxN---->AG256SL100(CPLD) EPM570T100CxN—>AG576SL100(CPLD) EPM570T100IxN---->AG576SL100(CPLD) EPM570T144CxN—>AG576SL144…

机器人纯阻抗控制接触刚性环境

问题描述 在机器人学中,阻抗控制是一种常用的控制策略,用于管理机器人在与环境交互时的运动和力。阻抗控制背后的关键概念是将环境视为导纳,而将机器人视为阻抗。 纯阻抗控制接触刚性环境时,机器人的行为方式主要受其阻抗参数的…

虚拟化之指令的Trap和仿真

有时,虚拟机监控程序需要在虚拟机(VM)中模拟操作。例如,VM内的软件可能尝试配置与功耗管理或缓存一致性相关的低级处理器控件。通常,您不希望将VM直接访问这些控件,因为它们可能被用于突破隔离,或影响系统中的其他VM。 trap在执行给定操作(例如读取寄存器)时引发异常…

二分查找算法

文章目录 二分查找二分的实战讲解二分查找普通二分模版 在排序数组中查找元素的第一个和最后一个位置万能二分模版 总结 二分查找 什么是二分查找:就是定义左右2个指针(此指针非真指针)取中间值 通过一次次取中间值找到要找到的数 二分的实战讲解 二分查找 题目:地址 题目解析…

实现SQL server数据库完整性

1.创建一个数据库名为“erp” 主数据文件:初始容量为5MB,最大容量为50MB,递增量为1MB,其余参数自设。事务日志文件:初始容量为3MB,最大容量为20MB,递增量为10%,其余参数自设。 创建…

Linux下c开发

编程环境 Linux 下的 C 语言程序设计与在其他环境中的 C 程序设计一样, 主要涉及到编辑器、编译链接器、调试器及项目管理工具。编译流程 编辑器 Linux 中最常用的编辑器有 Vi。编译连接器 编译是指源代码转化生成可执行代码的过程。在 Linux 中,最常用…

WMMSE方法的使用笔记

标题很帅 原论文的描述WMMSE的简单应用 无线蜂窝通信系统的预编码设计问题中,经常提到用WMMSE方法设计多用户和速率最大化的预编码,其中最为关键的一步是将原和速率最大化问题转化为均方误差最小化问题,从而将问题由非凸变为关于三个新变量的…

Vue3实现一个拾色器功能

​ <template><div class"color"><button v-if"hasEyeDrop" click"nativePick">点击取色</button><input v-else type"color" input"nativePick" v-model"selectedColor" /><p&…