当前位置: 首页 > news >正文

【mysql 第四篇章】bin log 的作用是啥呢?

一、redo Log 介绍

redo log 是一种偏向物理性质的重做日志,因为他里面记录类似的这样的东西,“对那个数据也中的什么记录,做了个什么修改”。它是 InnoDB 存储引擎特有的东西。

二、bin Log 日志

bin log 叫做归档日志,它里面记录的是偏于逻辑性的日志, 类似 对 users 表中的 id=10 的一行数据做了更新操作,更新以后的值是什么。它不是 InnoDB 存储引擎特有的日志文件,属于 mysql server 日志文件。

当事务提交的时候,redo log日志会写入磁盘文件中。其实在提交事务的时候,我们同时还会把这次更新对应的binlog日志写入磁盘的文件中。

在这里插入图片描述

三、bin Log 的刷盘策略

通过 sync_binlog 参数可以设置刷盘策略。参数为 0(默认值是 0)当 binlog 写入磁盘的时候,其实不是直接进入磁盘文件,而是进入 os cache 内存缓存。但是如果此时服务器宕机,存在os cache里的binlog日志是会丢失的。参数为 1 强制在提交事务的时候,binlog直接写入磁盘文件中,那么这样提交事务之后,哪怕机器宕机,磁盘上的binlog是不会丢失的。

四、基于 bin Log 和 redo Log 完成事务的提交

在这里插入图片描述

当我们把binlog写入磁盘文件后,接着就会完成最终事务的提交,此时会把本次更新对应的binlog文件名和这次binlog日志在文件里的位置,都写入到redo log文件中,同时在redo log日志文件里写入一个commit标记。在完成这件事情之后,才算最终完成了事务的提交。写入commit标记的意义是保持,redo log 和 binlog 日志保持一致的。

五、脏数据刷回磁盘

在这里插入图片描述

当上面的步骤执行完成之后,最后会有一个线程去随机的把buffer pool的修改后的数据刷回到磁盘中。即使mysql服务宕机也没有关系,因为所有修改后的数据都在redo log中了。

http://www.lryc.cn/news/419347.html

相关文章:

  • Linux 操作系统:基于环形队列的生产者消费者模型
  • python求解二次方程
  • Spring框架面试总结
  • java之网络编程篇
  • stm32f103c8t6与TB6612FNG解耦测试
  • 2253336 - 资源库 - OAC0 中的脱机状态
  • uni-app总结
  • 【JavaEE初阶】线程安全的集合类
  • 关于Vue项目npm快捷键,点击run启动报错,及npm i也报错的解决办法
  • React中,className属性自定义组件不生效的问题
  • Ubuntu22.04搭建fabric开发环境、开发环境下运行链码
  • [BSidesCF 2019]Kookie1
  • LCM红外小目标检测
  • 振德医疗选择泛微千里聆RPA,助力电商、人事业务流程自动化
  • VBA高级应用30例应用3在Excel中的ListObject对象:创建表
  • IP 地址在 SQL 注入攻击中的作用及防范策略
  • Unity VR黑屏
  • Vue.js 中使用 Watcher 的强大场景和案例
  • 《实现 DevOps 平台(2) · GitLab CI/CD 交互》
  • 【机器学习sklearn实战】岭回归、Lasso回归和弹性网络
  • Python 爬虫项目实战六:抓取猫眼电影排行榜的数据
  • YOLO系列:从yolov1至yolov8的进阶之路 持续更新中
  • 欧拉系统离线安装界面ukui
  • Milvus向量数据库的简介以及用途
  • 恒创科技:IPv4 和 IPv6 之间的主要区别
  • TinyWebserver的复现与改进(1):服务器环境的搭建与测试
  • 【Python】练习题附带答案
  • Springboot集成Proguard生成混淆jar包
  • 什么是NLP分词(Tokenization)
  • 基于深度学习的图像伪造检测