Mysql 日志(redolog, binlog, undoLog)

重做日志-redolog

是什么

innoDB存储引擎层面的日志,它的作用是当 数据更新过程中数据库发生异常导致提交的记录丢失

为什么

mysql的基本存储结构是页(记录都在页里面),所以更新语句时,mysql需要先把要更新的语句找到,加载进内存(buffer pool),再修改对应的记录,再写会磁盘

此时就会面临问题:

1、如果内存中的数据更新了,但是未落入磁盘,mysql挂了怎么办?

2、每个请求都需要将数据立马落入磁盘,速度会很慢,mysql可能会顶不住

因此 Innodb引入了redolog

怎么做,实现原理


 

redolog也是需要写入磁盘的,但它是顺序写入的,顺序io比随机io快很多

目的:当我们修改了数据,写完内存了,可能还未落入磁盘,数据库挂掉了,此时可以根据redo log来恢复数据。redo log是顺序io,所以写入速度很快,记录的是物理变化(xx页做了xx修改),文件体积小,所以恢复速度也快
 

  • 内容:记录的是物理数据页面的修改信息(xx页做了xx修改),其redo log是顺序写入redo log fail的物理文件中去的
  • 介绍一下:redolog又叫重做日志,是存储引擎层面的日志(innoDb特有的日志),用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来
  • 日志大小是固定的,即写满了之后会从头开始循环写
  • Innodb_log_file_size=100M(指定大小);Innodb_log_files_in_group=5(指定个数)
     

归档日志-binlog

binlog(归档日志):是mysql server层面的日志,属于逻辑日志,是以二进制形式记录的,记录的是这个语句的原始逻辑(每条变更的sql语句),追加写的方式,即一份日志文件写到一定大小的时候会更换下一个文件,不会覆盖。

  • 用于复制,在主从复制中,从库利用主库上的binlog进行传播,实现主从同步
  • 用于数据库基于时间点的还原

回滚日志-undolog

undo log:在数据的修改过程中,会记录一条与当前操作相反的逻辑到undo log中,如果因为某些原因导致事务异常失败了,可以借助undo log进行回滚,保证事务的完整性

  • 提供了回滚的作用,保证事务的原子性
  • mvcc的实现


 

redolog 和bin log的区别

bin log

redo log

实现层面

mysql server层实现的

innoDB存储引擎层面的

记录内容

记录的是逻辑日志(sql语句)

记录的是物理日志(xx页做了xx修改)

写入方式

追加写入,一个文件写完可以换一个文件接着写

循环写,空间大小固定,会覆盖

作用

用于主从复制,恢复数据

持久化

提交实际

事务提交时记录

事务开始时记录每次的变更信息

redolog是如何保证crash-safe的?

crash-safe是通过redo log的write ops和checkpoint机制来保证的

WAL(write ahead log)日志先行技术:先写日志,再写磁盘。对于数据更新操作,先写入redo log

redo log有两个关键的指针:write ops和checkpoint。write ops是当前记录的位置,一边写一边后移,无法移动的时候就回到开头。checkpoint是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把数据更新到数据文件。write ops和checkpoint之间还空着的地方,可以用来记录新的操作,如果write ops追上了checkpoint,此时不能进行新的更新操作,需要停下来先擦除一部分内容
 

redolog 能保证crash-safe,还需要bin log吗?

看场景

  • 主从模式下,binlog是需要的,因为从库同步主库的数据依赖于bin log
  • 单机模式下,如果不考虑基于某个时间点数据的还原,可以不需要bin log。但是万一需要恢复某个时间点的数据,是做不到的,所以建议一直开启bin log

简言之,red log只有innodb有,别的存储引擎没有。redo log是循环写的,不持久保存,所以还是需要binlog。


 


 


 


 

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

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

相关文章

Softing工业推出的edgeConnector将Allen-Bradley控制器集成到工业边缘应用中

2024年4月17日(哈尔),Softing宣布扩展其基于Docker的edgeConnector产品系列,推出了新软件模块edgeConnector Allen Bradley PLC,可方便用户访问来自ControlLogix和CompactLogix控制器数据。 (edgeConnector…

Linux提权--定时任务--打包配合 SUID(本地)文件权限配置不当(WEB+本地)

免责声明:本文仅做技术交流与学习... 目录 定时任务 打包配合 SUID-本地 原理: 背景: 操作演示: 分析: 实战发现: 定时任务 文件权限配置不当-WEB&本地 操作演示: 定时任务 打包配合 SUID-本地 原理: 提权通过获取计划任务执行文件信息进行提权 . 1、相对路径和…

Rust中忽略JSON反序列化时的不必要字段

在Rust中处理JSON数据时,经常会遇到JSON数据中包含一些在目标数据结构中不存在的字段的情况。如果你使用的是serde和serde_json这两个流行的库来处理JSON,那么有一些简单的方法可以忽略这些不必要的字段。 默认行为:忽略未知字段 在Rust中&…

人工智能专业(科普)

Ⅰ 简介 人工智能(Artificial Intelligence)是中国普通高等学校本科专业。人工智能,是一个以计算机科学为基础,由计算机、心理学、哲学等多学科交叉融合的交叉学科、新兴学科,研究、开发用于模拟、延伸和扩展人的智能…

在vue3中,如何优雅的使用echarts之实现大屏项目

前置知识 效果图 使用技术 Vue3 Echarts Gasp Gasp:是一个 JavaScript动画库,它支持快速开发高性能的 Web 动画。在本项目中,主要是用于做轨迹运动 所需安装的插件 npm i echarts npm i countup.js 数字滚动特效 npm i gsap javascript动画库 np…

MogDBopenGauss查询重写规则lazyagg

在MogDB&openGauss中,参数rewrite_rule用于控制查询重写,本文介绍查询重写规则lazyagg 在未设置rewrite_rulelazyagg的情况下,子查询中有GROUP BY会先进行GROUP BY lazyagg表示延迟聚合运算,目的是消除子查询中的聚合运算&…

宝塔面板怎么解决nginx跨域问题

1.找到宝塔的nginx配置文件 宝塔有一点不同,nginx配置文件不在nginx的安装目录中,应当去/www/server/panel/vhost/nginx找到 2.添加你要跨域的地址 location /api {proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-…

维护祖传项目Tomcat部署war包

文章目录 1. 安装tomcat2. 解决Tomcat启动日志乱码3. idea配置启动war包 1. 安装tomcat 选择免安装版本,只需要在系统变量里面配置一下。 新增系统变量 CATALINA_HOME D:\Users\common\tomcat\apache-tomcat-8.5.97-windows-x64\apache-tomcat-8.5.97 编辑追加Path…

FPGA SDRAM读写控制器

感谢邓堪文大佬 ! SDRAM 同步动态随机存取内存(synchronousdynamic randon-access menory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM)。通常DRAM是有一个异步接口的,这样它可以随时响…

Node.js基础:从入门到实战

初识 Node.js 与内置模块 (初识) 1、知道什么是node.js 2、知道node.js可以做什么 3、node.js 中js的组成部分 (内置模块) 4、用 fs 模块读写操作文件 5、使用 path 模块处理路径 6、使用http 模块写一个基本的web服务器 初识 N…

第1章 信息系统综合知识 1.4 IT战略

第1章 信息系统综合知识 1.4 IT战略 1.4.1 IT战略的内涵 IT战略,是在诊断和评估企业信息化现状的基础上,制定和调整企业信息化的指导纲领,争取企业以最合适的成本,去做最合适的信息化工作。 IT战略制定步骤: 定方向:明确远景…

设计模式——模板设计模式(Template Method)

模板设计-base 什么是模板? 举个简单的例子,以AABB的格式,写出一个词语,你可能会想到,明明白白,干干净净等, 这个AABB就是一个模板,对模板心中有了一个清晰的概念之后,…

docker————docker的安装

目录 docker的安装 1、安装yum-utils工具 2、安装yum仓库 3、安装docker引擎 4、设置开机启动,并立即启动 5、测试 docker的安装 docker的官网Docker Docs 我才用的linux版本是rocky,使用的是最小安装 1、安装yum-utils工具 [rootbogon yum.rep…

环境变量(全)

概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执…

今日arXiv最热NLP大模型论文:揭露大语言模型短板,北京大学提出事件推理测试基准

人工智能领域又一里程碑时刻!北京大学、北京智源人工智能研究院等机构联合推出大型事件推理评测基准 。这是首个同时在知识和推理层面全面评估大模型事件推理能力的数据集。 总所周知,事件推理需要丰富的事件知识和强大的推理能力,涉及多种推…

consul启动Error_server_rejoin_age_max (168h0m0s) - consider wiping your data dir

consul 启动报错: consul[11880]: 2024-05-12T08:37:51.095-0400 [ERROR] agent: startup error: error"refusing to rejoin cluster because server has been offline for more than the configured server_rejoin_age_max (168h0m0s) - consider wiping you…

【GD32】02-ADC模拟数字转换器

ADC 在电子和通信技术中,ADC(模拟数字转换器)是一种将模拟信号转换为数字信号的电子设备。这种转换是电子系统中非常关键的一个环节,因为数字信号更易于处理、存储和传输。ADC的工作原理通常包括采样、保持、量化和编码等步骤。采…

http协议 tomcat如何访问资源 servlet理论介绍

tomcat介绍 bin是启动命令; conf是配置,可以修改端口号; lib是依赖的jar包; logs是日志 webapps是重点,在这里新建我们自己的javaWeb项目 tomcat如何访问资源 tomcat通过统一资源定位符(URL)来…

乡村振兴与农村基础设施建设:加大农村基础设施建设投入,提升农村公共服务水平,改善农民生产生活条件,构建宜居宜业的美丽乡村

一、引言 乡村振兴是我国现代化进程中的重要战略,而农村基础设施建设则是乡村振兴的基石。随着城市化进程的加快,农村基础设施建设滞后的问题日益凸显,成为制约乡村发展的瓶颈。因此,加大农村基础设施建设投入,提升农…

打造一套在线教育系统,如何在教育这个慢行业打造品牌?

品牌对于教育行业非常重要,很多从事教育行业的朋友一直想塑造属于自己的品牌形象,但做起来却没那么容易。因为教育行业相对来说是一个慢行业,用户必须看到效果才会认可,而教育的效果往往需要经过长期的学习才能看到。 我觉得&…