IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mysql日志体系 -> 正文阅读

[大数据]Mysql日志体系

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:16:02  更:2022-12-25 11:20:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 18:31:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码