Redis__三大日志

文章目录

😊 @ 作者:Lion J
💖 @ 主页: https://blog.csdn.net/weixin_69252724
🎉 @ 主题:Redis__三大日志
⏱️ @ 创作时间:2024年04月30日
————————————————

对于MySQL来说, 有三种类型的日志, Binlog、Undolog、Redolog

Undo Log

字面意思可以很容易的知道, 就是撤销日志的意思, 他的作用主要是将MySQL中的数据回到某个状态

Undo Log什么时候用到

  • 在每一个事务开始之前, MySQL 会将待修改的记录保存在Undo Log 中, 如果数据库崩溃或事务需要回滚时, MySQL就可以通过Undo Log日志, 将数据回滚到之前的状态

  • 在MySQL新增、修改、删除数据的时候, 在事务开始之前, 就会将数据写入到Undo Log 中. 事务在提交的时候, 并不会立刻删除Undo Log, InnoDB存储引擎 会对事务对应的Undo Log放入到待删除的列表中, 之后就通过后天的线程对删除列表进行删除处理.

注意Undo Log实际是一种逻辑日志, 记录的是一个变化的过程.
就比如:SQL执行一个操作, delete操作, 那么Undo Log日志就会记录一个insert 操作; MySQL 执行一个 insert 操作, Undo Log就会生成一个delete记录;
意思就总和你对着干, 它会生成和你操作相反的日志记录

Undo Log的作用

Undo Log 对于MySQL实现事务来说, 起着至关重要的作用, 它实现了事务的原子性 和 多版本并发控制, --> MVCC

  • 实现事务原子性
    Undo Log 能够实现MySQL事务的原子性, 在事务的处理过程中, 如果MySQL出现了错误或者我想执行事务的回滚操作(执行rollback操作), MySQL可以利用Undo Log日志将数据库的数据恢复到之前的状态

  • 实现MVCC机制
    上面说了,在事务开始之前, MySQL会将要修改的数据放到Undo Log中, MySQL可以利用此时的旧版本数据副本或者快照以便让其他并发事务进行读取

举个例子
在这里插入图片描述

首先事务A在更新 id=1 的数据之前, 会将数据保存到Undo Buffer 中. 事务A没有提交之前, 此时如果事务B 开始, 需要查询id =1 的数据, 那么就从Undo Log 数据 中的快照数据进行一个返回,
Undo Buffer 就是一个 日志缓冲池, 定期将日志数据写入到磁盘中, 减少每次修改需要和磁盘进行IO操作

Redo Log

redo log 听名字就能看出来, 它是个重做日志, 指的是在数据库发生意外情况, 或者宕机, 操作造成数据丢失情况的时候, 可以重新执行某操作. 在MySQL中, 事务中修改任何数据, 都会将最新的数据写入到Redo Log中进行备份
–> (保险日志)

在MySQL中,随着事务操作的执行,就会产生Redo Log日志,在事务提交时会产生Redo Log并将其写入Redo Buffer,Redo Buffer也并不是随着事务的提交就会被立刻写入到磁盘中,而是等事务操作的脏页写入到磁盘之后,Redo Log的使命也就完成了,此时,Redo Log日志占用的空间可以重新利用,会被后续产生的Redo Log日志覆盖
脏页: 就是在内存中修改 但是没有返回磁盘的数据

Redo Log 原理

Redo Log 能够实现事务的持久性, 防止发生故障的时间点, 恰好有脏页未写入表的ibd文件中; 那么在下一次重启MySQL的时候, 就会根据Redo Log 来进行重做, 从而将未提交的事务进行持久化

Redo Log的写机制

Redo Log文件的内容是以顺序循环的方式写入文件的,写满时就会回到第一个文件,进行覆盖, 类型于循环链表

在这里插入图片描述

  • Write Pos 是当前记录的位置,一边写一边后移,写到最后一个文件末尾后就回到 0 号文件开头;
  • CheckPoint是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录更新到数 据文件;

图这就是一个重做文件组, 有四个重做日志文件

Binlog

Binlog记录所有MySQL数据库表结构变更以及表数据修改的二进制日志,不会记录select和show这类查询操作的日志。Binlog日志是以事件形式记录,还包含语句所执行的消耗时间。开启Binlog日志有以下两个最重要的使用场景。

使用主要有一下两个功能:

  • 主从复制:在主库里面开启binlog功能, 这样就可以把binlog传递给库, 从库拿到binlog后实现数据恢复,达到主从一致性
  • 数据恢复: 可以通过mysqlbinlog共聚来恢复数据

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

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

相关文章

ShellScript脚本编程(一)

什么是Shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务 为什么…

Themis新篇章:老牌衍生品协议登陆Blast L2,探索全新经济模型

本文将深入分析 Themis 的最新经济模型,探讨其核心概念和机制、优势与创新之处、风险与挑战。 一、引言 随着区块链技术的不断发展,DeFi 衍生品项目逐渐成为市场的焦点。而用户体验的革新,进一步的金融创新,去中心化治理方案的优…

SpringCloud整合Gateway结合Nacos

目录 一、引入依赖 二、开启两个测试项目 2.1 order service ​编辑 2.2 user service 三、gateway项目 3.1 新建一个bootstrap.yml文件 3.2 将我们的的网关配置写道nacos里的配置里 3.3 测试:看能够根据网关路由到两个测试的项目 四、 优化 4.1 将项目打包…

字节跳动发起AI战争 寻找下一个TikTok

现如今在字节跳动,已近乎隐退的张一鸣,只重点关注两件事:其一,是风暴中的TikTok;其二,就是字节跳动正在全力追赶的AI战略业务。 提及字节的AI战略远望,多个接近字节的人士均认为,以Flow部门出品最为“正统…

pthread线程相关

LWP :轻量级 进程,本质仍是进程 进程 :独立地址空间,拥有PCB 线程:有独立的TCB,但没有独立的地址空间(共享) 区别 :在与是否共享地址文件 进程 (独居)&am…

数据结构:最小生成树(Prim算法和Kruskal算法)、图的最短路径(Dijkstra算法和Bellman-Ford算法)

什么是最小生成树?Prim算法和Kruskal算法是如何找到最小生成树的? 最小生成树是指在一个连通图中,通过连接所有节点并使得总权重最小的子图。 Prim算法和Kruskal算法是两种常用的算法,用于寻找最小生成树。 Prim算法的步骤如下&…

文件API及其操作

这里介绍两类文件操作、三个文件类。包括文件系统操作(File类)、文件内容操作(操作字节流、操作字符流) 1.文件类File 1.1.认识File类 (1)什么是File类呢?其实就是可以操作文件的一个类。通过…

C# dateTimePicker控件存取数据库问题

存入数据库时,先设置, dateTimePicker1.Format DateTimePickerFormat.Custom; dateTimePicker1.CustomFormat "yyyy-MM-dd HH:mm:ss"; 然后,dateTimePicker1.Text 就和textBox1.Text一样方式存入数据库;…

【Java EE】Mybatis之XML详解

文章目录 🎍配置数据库连接和MyBatis🍀写持久层代码🌸添加mapper接口🌸添加UserInfoXMLMapper.xml🌸单元测试 🌲CRUD🌸增(Insert)🌸删(Delete)🌸改(Update)🌸…

低空经济+飞行汽车:eVTOL技术详解

低空经济是以各种有人驾驶和无人驾驶航空器的各类低空飞行活动为牵引,辐射带动相关领域融合发展的综合性经济形态。它广泛体现于第一、第二、第三产业之中,在促进经济发展、加强社会保障、服务国防事业等方面发挥着日益重要的作用。 飞行汽车&#xff0c…

Linux服务器常用命令总结

view查找日志关键词 注意日志级别,回车后等一会儿,因为文件可能比较大加载完需要时间 当内容显示出来后,使用“/关键词”搜索 回车就能搜到,n表示查找下一个,N表示查找上一个 find 查找 find Family -name book …

js APIS part2

什么是事件? 事件是在编程时系统内发生的 动作 或者发生的事情。比如用户在网页上 单击 一个按钮 什么是事件监听? 就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 绑定事件或者注册…

Python爬取豆瓣电影Top250数据

任务 爬取豆瓣电影top250中的影片名称、影片海报、年份、地区、类型、评分、评价人数、总体评价,并输出到douban_top250.xlsx文件中 环境 Python 3.8 requests bs4 openpyxl 源码 # 创建一个新的Excel工作簿 workbook openpyxl.Workbook() # 获取默认的工作表…

酒水门店私域流量运营搭建执行规划方案

【干货资料持续更新,以防走丢】 酒水门店私域流量运营搭建执行规划方案 部分资料预览 资料部分是网络整理,仅供学习参考。 PPT可编辑(完整资料包含以下内容) 目录 精酿啤酒品牌私域执行运营的内容策划,涉及以下几个…

Messari 报告摘要 :Covalent Network(CQT)2024 年第一季度表现

摘要: 尽管 CQT 代币流通供应量增加了 20%(新增 1.04 亿枚 CQT),但 CQT 的质押百分比仅从 2023 年第一季度的 22% 增长到了 2024 年第一季度的 29%。 CQT 的市值季度环比增长了 28%,多次达到 2.75 亿美元&#xff0c…

全栈开发之路——前端篇(4)watch监视、数据绑定和计算属性

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 辅助文档:HTML标签大全(实时更新&#xff…

Python | Leetcode Python题解之第64题最小路径和

题目: 题解: class Solution:def minPathSum(self, grid: List[List[int]]) -> int:if not grid or not grid[0]:return 0rows, columns len(grid), len(grid[0])dp [[0] * columns for _ in range(rows)]dp[0][0] grid[0][0]for i in range(1, r…

All In ai,Oracle 23C没了,等来了Oracle 23ai

今年一月份的Blog介绍Oracle命名规则的时候,说到Oracle的命名是紧紧跟随时代浪潮的前言科技的,在文章的最后还大胆预测也许Oracle的下一个版本就叫25A了,结果Oracle根本等不及,把原来已经海量宣传的Oracle 23C直接改名为23ai&…

分布式与一致性协议之Raft算法(四)

Raft算法 Raft是如何解决成员变更问题的 在日常工作中,你可能会遇到服务器故障的情况,这时你需要替换集群中的服务器。如果遇到需要改变数据副本数的情况,则需要增加或移除集群中的服务器。总的来说,在日常工作中,集…

如何基于nginx搭建https网站

华子目录 使用nginx的http_ssl模块建立加密传输的网站查看配置文件ssl配置文件的主要参数实验:搭建nginxssl加密认证的web服务器 使用nginx的http_ssl模块建立加密传输的网站 查看 [rootserver ~]# nginx -V #查看是否有--with-http_ssl_module模块,如…