我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redo log 与 binlog - G

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

redo log 与 binlog - G

redo log 与 binlog - G

redo log 与 binlog

 

redo log

  • redo log (重做日志)是处于存储引擎层的,是InnoDB引擎特有的

  • redo log 存储的是物理日志 --- 即,“在某个数据页上改动了什么”

  • redo log是循环写,空间是一定的,会用完。

  • MySQL使用WAL技术 --- Write-Ahead-Logging,

    具体到redo log就是:当有一条记录需要更新的时候,InnoDB引擎会先先把记录写在redo log里并更新内存,然后在空闲的时候将操作记录更新到磁盘里。

  • InnoDB 引擎的 redo log 的空间是有限的,一组4个文件,每个文件1GB,总共4GB。当这块“临时记录板”写满后再次从开头的地方循环写入。

  • redo log 的写入分为两个步骤 --- perparecommit阶段 --- ”两阶段提交“

 

有了redo log,就可以保证即使数据库发生异常重启也不会丢失记录,称为 crash-safe

 

binlog

  • binlog (归档日志) 处于server层,是Mysql自带的日志模块

  • binlog 是存储的是逻辑日志 --- 即,“记录原始语句”。因此可用来恢复数据库 --- 相当于在某个时间的基础上重新运行了一遍相关语句。

  • binlog 是可追加写入的 --- binlog文件写到 一定大小后就会在下一个文件中继续写,而不覆盖之前的文件。

 

两种日志的使用流程

  • (执行器)读取表中需要update的那一行
  • (InnoDB)查询该行信息是否在内存中。若没有则从磁盘读取到内存。然后都返回行数据
  • (执行器)更改行数据、写入新行
  • (InnoDB)新行更新到内存,写入redo log (此时处于prepare阶段)
  • (执行器)写入binlog
  • (InnoDB)提交事务 (此时处于commit阶段)

使用“两阶段提交”是为了避免恢复时恢复出来的数据库与原有状态不一致的现象。

 

避免MySQL crash时数据丢失的设置

我们知道发生crash时丢失的肯定都是内存中的数据,通过以下设置进行持久化

  • innodb_flush_log_at_trx_commit = 1 --- 每次事务的 redo log 直接持久化到磁盘
  • sync_binlog = 1 --- 每次事务的binlog都持久化到磁盘

 

恢复与扩容

  • 最近的全量备份+到相应时间点的归档日志(binlog)

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redo log 与 binlog - G

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redo log 与 binlog - G

redo log 与 binlog redo logredo log (重做日志)是处于存储引擎层的,是InnoDB引擎特有的redo log 存储的是物理日志 --- 即,“在某个数据页上改动了什么”redo log是循环写,空间是一定的,会用完。MySQL
redo log 与 binlog - G
2019-04-09

MySQL中redo log与binlog的区别有哪些

这篇文章主要介绍“MySQL中redo log与binlog的区别有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL中redo log与binlog的区别有哪些”文章能帮助大家解决问题。
2023-06-29

MySQL系列之redo log、undo log和binlog详解

事务的实现 redo log保证事务的持久性,undo log用来帮助事务回滚及MVCC的功能。 InnoDB存储引擎体系结构redo log Write Ahead Log策略 事务提交时,先写重做日志再修改页;当由于发生宕机而导致数据丢
2022-05-26

MySQL三大日志(binlog、redo log和undo log)图文详解

日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,下面这篇文章主要给大家介绍了关于MySQL三大日志(binlog、redo log和undo log)的相关资料,需要的朋友可以参考下
2023-01-28

MySQL三大日志(binlog、redo log和undo log)图文详解

目录1.redo logredo log概述刷盘时机innodb_flush_log_at_trx_commit=0innodb_flush_log_at_trx_commit=1innodb_flush_log_at_trx_commit
2023-01-28

mysql中redo log和binlog的区别有哪些

这篇文章给大家分享的是有关mysql中redo log和binlog的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。想跟大家聊聊关于 mysql 中的两个小的知识点:redo log 和 binlog
2023-06-29

MySQL 撤销日志与重做日志(Undo Log与Redo Log)相关总结

Undo Log数据库事务开始之前,会将要修改的记录存放到 Undo 日志里,当事务回滚时或者数据库崩溃时,可以利用 Undo 日志,撤销未提交事务对数据库产生的影响。 Undo Log产生和销毁Undo Log在事务开始前产生;事务在提交
2022-05-20

详解MySQL 重做日志(redo log)与回滚日志(undo logo)

前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍。相对于其他几种日志而言, redo log 和 undo log 是更加神秘,难以观测的。本篇文章将主要介绍这
2022-05-11

编程热搜

目录