Mysql日志体系

news2024/11/19 17:47:31

3、Mysql日志体系

  • bing log :在server记录mysql所有的DDL和DML语句,主要用来做主从复制和数据恢复。内容追加,没有固定大小限制。
  • redo log :
  • undo log :

3.1、bin log

3.1.1、binlog日志作用

binlog记录所有的DDL和DML语句,用来做主从复制和数据恢复。内容可以追加,没有固定大小限制。

在开启了binlog功能的情况下,我们可以把binlog导出sql语句,把所有的操作重放一遍,来实现数据恢复。

3.2、redo log

redo log 位于/var/lib/mysql目录下的ib_logfile0 ib_logfile1,默认2个文件,每个48M。

3.2.1、为什么需要redo log?

由于Buffer Pool刷脏不是实时的,如果出现数据库宕机、或者重启就会有丢失数据的风险。在数据写入BufferPool的同时,我们记录redo Log日志。用于出现上面的情况,恢复数据的作用,保证数据 的持久性。

同样是写到日志文件,也是写到磁盘,为什么Buffer Pool不直接写到数据文件(磁盘)?

3.2.2、写日志文件和数据文件区别?

写数据文件是随机IO,效率低。

写redo log日志文件是顺序IO,效率高。

3.2.3、redo log特点

  • InnoDB存储引擎特有,支持奔溃恢复的一个特性。
  • redo log记录的不是数据页更新之后的状态,而是记录的在某个数据页上做了修改
  • redo log大小固定,内容写满直接覆盖之前的内容,一旦写满就触发buffer pool的磁盘同步。

3.2.4、redo log buffer刷盘

跳转2.1.4

3.3、undo log

undo log(撤销日志或者回滚日志)记录了事务发生之前的数据状态,分为insert undo logupdate undo log。如果修改数据时出现异常,可以用undo log来实现回滚操作。

3.4、常见问题

3.4.1、什么是二阶段提交?

一般情况下,事务提交涉及redo log 和 binlog。当commit 命令执行时,

  • prepare 阶段:这个阶段事务中新生成的redo log 会被刷到磁盘,并设置为prepared状态。
  • commit阶段:innodb释放锁,释放回滚段,设置redo log提交状态,binlog持久化到磁盘,然后存储引擎层提交。

3.4.2、为什么需要二阶段提交?

为了保证数据的一致性,redo logbin log要么都成功,要么都失败。

3.4.3、二阶段提交流程

  • 时间点1
  • prepare阶段
  • 时间点2
  • commit阶段
  • 时间点3

时间点1出问题redo logbin log都在内存里,没有刷盘,所以就相当于回滚了。不会影响数据的一致性。

时间点2出问题:这个时候redo log已经刷盘,binlog没有保存下来。服务器故障恢复的时候,先读取redo log,发现数据在prepare阶段,查看binlog日志。如果binlog数据完整,则提交数据;如果binlog日志不完整,就回滚数据。

时间点3出问题:这个时候redo logbinlog都已经存磁盘,服务器从redo log恢复就好了。

3.4.4、一条更新sql的执行流程

在这里插入图片描述

redo log and binlog

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

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

相关文章

Unity CEO:玩家不在乎AR还是VR,他们只想要优质内容

近期,Unity CEO John Riccitiello在接受英国金融时报采访时,透露了自己对于游戏的前生今世,以及AR/VR和未来的看法。他认为,打造一个新平台需要大量优质内容,创意对于新平台很重要,不管AR和VR技术有什么区别…

java医院挂号系统挂号预约网站挂号网站预约网站源码

主要实现门诊挂号和用户网站预约挂号的功能 演示视频: https://www.bilibili.com/video/BV1nN411d7HT/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 环境:jdk7/8mysql5.5tomcat7/8 技术:ssm(springspringmvcmyi…

读书笔记---Bioinformatics Data Skills

最近阅读了《Bioinformatics Data Skills》,是不错的生物信息学入门书,本文作者简介如下: 全书以下面三个方向展开,为生物信息学的继续学习指明了道路: (1)生物信息学数据技巧(第一章…

动态DNS与DPDK高性能DNS -DPDK环境搭建

工具准备: vmware Ubuntu 16.04 Server 版本 1.vmware 添加两块网卡 桥接网卡作为 DPDK 运行的网卡 NAT 网卡作为 ssh 连接的网卡 2.修改网卡配置信息 将 ethernet0.virtualDev 由 e1000 修改 vmxnet3,因为 vmware 的 vmxnet3 支持多队 列网卡 3.修…

Qt对象树

对象模型(对象树) 类似于c中虚析构实现的功能一样,在释放父类对象的同时调用子类的析构函数释放子类对象 也c调用析构函数的区别是:会先调用父类的析构函数,然后一层层往下调用子类析构,直到调用到底层子…

10.1、Django框架简介、创建第一个应用

文章目录预备知识MVC模式和MTV模式MVC模式MTV 模式Django框架Django框架简介Django框架的应用启动后台admin站点管理数据库迁移创建管理员用户管理界面本地化创建并使用一个应用bookapp项目的数据库模型创建数据库模型生成数据库表数据库上的基本操作启用后台admin站点管理自定…

Vue框架--Ruoyi解析(前端)

路由router注册 router目录下的 index.js 配合 permission.js 是整套vue前端项目的权限判断核心. index.js 里面的path 配置都是一些不会与权限挂钩的路由,例如: 404、登录页面路径等. permission.js 中的 router.beforeEach 是路由拦截,在访问某个链接之前会进行权限判断,但是…

Mob教你汇总常见的用户注册和登录方式

目前市面上APP的常见的用户注册和登录方式有三种,第一种是最早期的手机号码密码登录,第二种是常见的 手机号码短信验证码,第三者是最新推出,且正被各大应用APP接入采用的" 一键登录"秒验方式。本文从运行方式、优势、劣…

【Leetcode】965. 单值二叉树、100. 相同的树、572. 另一棵树的子树

作者:一个喜欢猫咪的的程序员 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 965. 单值二叉树 100. 相同的树 572. 另一棵树的子树 965. 单值二叉树…

蓝桥杯,我劝你不要参加的8个完美理由

蓝桥杯,是一个全国高校的IT技术比拼,如果你参加了,可能不止是刷题数量的剧增,还有你的软件人生 我劝你不要参加,因为如果你参加了,可能会有以下烦恼: 目录 1、会让你变得上进 2、会提前感受码…

OpenCV inRange 函数使用详解

本文是 OpenCV图像视觉入门之路的第6篇文章,本人详细的解决了RGB转HSV,HSV通过AI来进行HSV转 inRange() 函数的范围值操作,简单全面的解决了OpenCV对于图像中某个颜色的分析工作,本文通过识别红色区域和蓝色区域来编写示例程序和博…

从交互设计师的角度,聊聊设计工具的那些事

工欲善其事,必先利其器,这句话是出自论语,讲的是要做好一件事,工具是非常重要的,作为一个设计师,设计工具对于我们的重要性毋庸置疑,每天都在接触,也有很多感悟和心得。 我从事设计…

羟基生物素(Biotin-OH),生物素引发剂(Biotin-Cl)

产品名称:羟基生物素,生物素引发剂 英文名称:Biotin-Cl,Biotin-OH 含biotin-DSPE的胰岛素脂质体 合成生物素一硬脂酥磷脂酥乙醇胺(biotin-DSPE),制备含 biotin-DSPE 的胰岛素脂质体,以粒径和包封率为指标 制备生物素修饰的胰岛素…

如何通过视频推广的方式帮助外贸B2B企业获得询盘

会有外贸企业比较烦恼,总是寻找不到精准客户,也很少有客户向自己询盘,企业需要订单,自己的品牌想要在目标市场被知晓,如何解决这些问题呢?我们可以跟随现阶段流行的趋势——视频推广,接下来请慢…

函数作图的技巧(高数)

前言 从初中开始,我们就开始用笔在平面直角坐标系上作函数图象。随着对函数研究的不断深入,对作出的函数图象的精准度的要求也越来越高。以往我们只需要描一下点,在将点连起来即可。但用这种方法的话偏差可能会很大,所以我们不妨…

数据仓库基础与Apache Hive入门

数据仓库基本概念 数据仓库,简称数仓,用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持。 数据仓库本身并不生产任何数据,其数据来源于不同的外部系统同时数据仓库自…

前端工程化与 webpack:webpack 中的 loader

1. loader 概述 在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块。其他非 .js 后缀名结尾的模块, webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错! loader 加载器的作用…

【JavaEE】【Servlet API详解】重点!!!

努力经营当下,直至未来明朗! 文章目录【Servlet API概述】【HttpServlet】【HttpServletRequest】【HttpServletResponse】写例子:表白墙表白墙参考代码小结坚持一定很酷! 【Servlet API概述】 API其实就是一组类/方法Servlet提…

CANoe-VN5000设备的指示灯含义

我们以VN5650为例: Power 当设备通电时,Power灯亮起 Sync 当设备同步时,Sync灯亮起。Vector设备有三种时间同步方式:PTP、HW-SYNC、SW-SYNC ColorSync StateDescriptionOffNot Configured此设备没有激活的主协议或从协议,或者尚未加载配置OrangeConfigured, waiting for …

Redis布隆过滤器

什么是布隆过滤器 布隆过滤器(Bloom Filter)是一个二进制向量和一系列随机映射函数实现,用于判断一个元素是否在集合中。 如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等…