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。


 


 


 


 

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

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

相关文章

厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中

一、写在开头 我们在上一篇文章中提到了通过EasyExcel处理Mysql百万数据的导入功能(一键看原文),当时我们经过测试数据的反复测验,100万条放在excel中的数据,4个字段的情况下,导入数据库,平均耗…

LibreNMS简介

目录 1 LibreNMS简单介绍1.1 LibreNMS介绍 2 安装2.1 Ubuntu安装1、安装依赖2、添加 librenms 用户3、下载 LibreNMS4、设置权限5、安装 PHP 依赖项6、设置时区7、配置 MariaDB8、配置 PHP-FPM9、配置 Web 服务器10、启用 lnms 命令11、配置 snmpd12、cron13、启用调度程序14、…

[Flutter GetX使用] Getx路由和状态管理-GetController使用过程中的踩坑记录

文章目录 问题 - Get.find() 报错!原因总结A:路由和控制器设计a1:项目中的Get路由aa1.项目路由结构aa2.本项目路由的注意点: B: GetController的冷知识C: 总结来看D: 一些参考资料 问题 - Get.find() 报错! 刚接触Getx, 遇到 Get.find()确找不到, 进而报错的问题, 一时间有点没…

AI算法-高数4-偏导数(理解梯度下降算法基础)

宋浩老师:6.3 偏导数_哔哩哔哩_bilibili 示例: 几何意义:

nodejs复习笔记

最近在复习nodejs,整理了一些笔记来记录和分享。 非常惭愧,我之前关于nodejs学习的一篇文章《nodejs全栈开发学习笔记》已经是2019年6月份的时候了,大概浏览了一下,发现当时很多不明白的地方,现在通过复习&#xff0c…

【大数据】HDFS、HBase操作教程(含指令和JAVA API)

目录 1.前言 2.HDFS 2.1.指令操作 2.2.JAVA API 3.HBase 3.1.指令操作 3.2.JAVA API 1.前言 本文是作者大数据专栏系列的其中一篇,前文中已经详细聊过分布式文件系统HDFS和分布式数据库HBase了,本文将会是它们的实操讲解。 HDFS相关前文&#x…

大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)

大学生体质测试管理系统 目录 基于Springboot+vue的大学生体质测试管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 4教师功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算…

SEMI启动SiC专有技术项目

公司郑重声明,其正致力于筛选那些能够稳定输出、且可重复使用的关键参数性能。SEMI,这家SiC领域的佼佼者,已经启动了一项独具匠心的专有技术(KGD)筛选程序。该程序旨在为客户提供高品质的、经过严格电气分类与光学检验…

【谷粒商城】03创建商品模块

1.创建模块 2.创建项目微服务 商品服务、仓储服务、订单服务、优惠券服务、用户服务 共同: 1)、web、openfeign 2)、每一个服务,包名 com.atguigu.gulimall.xxx(product/order/ware/coupon/member) 3)、模块名&#x…

【1 bit 翻转+无任何保护】MidnightsunQuals 2021 BroHammer

前言 又是一道非常有意思的题目,其实笔者很喜欢这种跟页表、特权级等相关的题目(:虽然大多都无法独立做出来,但是通过这些题目可以学到很多的东西 题目分析 内核版本:v4.17.0smap/smep/kpti/kaslr 全关 题目给了源…

ipa 功能包调试,分区算法,覆盖算法测试

参考 wiki 流网络 flow network 解释 相关文章 ipa 分区算法 ipa 分区算法总结,部分算法图解 环境 ubuntu20,ros 版本 noetic 运行测试 按照 readme 提示进行测试,跳过第一个步骤,并不需要 turtlebot3。 执行第三个 launch 报…

第02章 计算机网络概述

2.1 本章目标 了解计算机网络的定义了解计算机网络的功能了解计算机网络的分类了解计算机网络的组成 2.2 计算机网络的定义 2.3 计算机网络的功能 2.4 计算机网络的分类 物理拓扑结构分类:总线型、环型、星型 2.5 计算机网络的组成 网络适配器(NIC)接口规格分类&a…

事件高级。

一、注册事件(绑定事件) 就是给元素添加事件 注册事件有两种方式:传统方式和方法监听注册方式 1 传统注册方式 方法监听注册事件 2、 addEventListener 事件监听方式 里面的事件类型是字符串,必定加引号,而且不带o…

【busybox记录】【shell指令】ls

目录 内容来源: 【GUN】【ls】指令介绍 【busybox】【ls】指令介绍 【linux】【ls】指令介绍 使用示例-默认输出: 列出目录内容 - 默认输出 列出目录内容 - 不忽略以.开头的文件 列出目录内容 - 不忽略以.开头的文件,只忽略.和..文件…

机器学习笔记导航(吴恩达版)

01.机器学习笔记01:机器学习前置概念导入、线性回归、梯度下降算法 02.机器学习笔记02:多元线性回归、多元梯度下降算法、特征缩放、均值归一化、正规方程 03.机器学习笔记03:octave安装、创建矩阵 04.机器学习笔记04:octave中移动…

量化之王西蒙斯:那些投资“神迹”和难言的“身后事”

投资大师总是相偕而来,又相伴而去。 美国当地时间2024年5月10日,量化投资大师西蒙斯(James Harris Simons)骤然去世,享年86岁。 此时距离芒格离世不到半年。 西蒙斯拥有数学家、投资家、慈善家、量化行业开拓者、密…

17_基于Flash和RAM的的文件系统选择

嵌入式系统常见文件系统 本文主要讲述在嵌入式系统中,常见的基于flash和内存(RAM)的文件系统类型,具体选择要结合实际需求灵活选配。 一、基于 Flash 的文件系统 基于 Flash 的文件系统主要包括 JFFS2、 YAFFS、 Cramfs 和 Romfs 等,各种文件系统具有不同的特点,本文将分…

UBoat:一款功能强大的HTTP Botnet学习与研究工具

关于UBoat UBoat是一款功能强大的HTTP Botnet概念验证工具,该工具支持复刻一个现实场景中完整功能的Botnet测试环境,广大研究人员可以利用UBoat深入学习和研究Botnet的工作机制,以此来提升安全检测和保护策略。 功能介绍 1、基于C开发&…

halcon学习之一维测量基础

目录 创建测量矩形,获取测量句柄 gen_measure_rectangle2() 使用句柄进行测量 measure_pos() 修改参数Threshold 修改参数Transition 修改参数select 参数RowEdge,ColumnEdge,Distance …

Lab4: traps

RISC-V assembly Which registers contain arguments to functions? For example, which register holds 13 in mains call to printf? 根据RISC-V函数调用规范,函数的前8个参数使用a0-a7寄存器传递。 当main函数调用printf函数时,a2寄存器保存13 …