【redo log buffer】【redo log file】-原理

目录:

1.重做日志写入过程图

2.相关知识点汇总图

3.redo_log_buffer 原理

4.redo_log_file 原理

1. 重做日志写入过程:

2. 相关知识点汇总:

3. redo log buffer 原理

重做日志缓冲(redo log buffer)是Innodb存储引擎的内存区域中的一部分。

【重做日志信息--(1)-->redo log buffer--(2)-->重做日志文件】

在(2)中涉及知识:

<1>.关于innodb_log_buffer_size的大小:(默认8M)

mysql> show variables like 'innodb_log_buffer_size%';

+------------------------+---------+

| innodb_log_buffer_size | 8388608 |

+------------------------+---------+

8388608(Byte)/1024/1024=8M

重做日志缓冲不需要设置的太大,只要保证每秒产生的事务量在缓冲大小范围之内。因为每秒都会刷新缓冲到日志文件。8M足够了。

<2>.在以下三种情况下,会将重做日志缓冲中的内容刷新到外部磁盘的重做日志文件中。

Master Thread 每一秒将重做日志缓冲刷新到重做日志文件;

每个事务提交时会将重做日志缓冲刷新到重做日志文件;

当重做日志缓冲池剩余空间小于1/2时,重做日志缓冲刷新到重做日志文件。

4. redo log file 原理

<1>.重做日志介绍

日志文件名:

1.innodb_log_group_home_dir参数指定的目录下有两个文件:ib_logfile0,ib_logfile1

2.该文件被称为:重做日志文件(redo log file),记录Innodb存储引擎的事务日志。至关重要!!!

3.例如:服务器意外宕机导致实例失败,Innodb存储引擎利用重做日志恢复到宕机前的状态,以此保证数据的完整性。

日志文件组:

1.每个Innodb存储引擎至少有1个重做日志文件组,每个组至少包含2个重做日志文件(ib_logfile0,ib_logfile1).

2.可以通过设置多个镜像日志组(mirrored log groups),将不同组放到不同磁盘,提高重做日志的高可用性。

3.日志组中的文件大小是一致的,以循环的方式运行。文件1写满时,切换到文件2,文件2写满时,再次切换到文件1.

日志文件参数:

1.innodb_log_file_size 重做日志文件的大小。

2.innodb_log_files_in_group 指定重做日志文件组中文件的数量,默认2

3.innodb_mirrored_log_groups 指定了日志镜像文件组的数量,默认1

4.innodb_log_group_home_dir 指定日志文件组所在的路径,默认./ ,表示在数据库的数据目录下。

<2>.重做日志文件大小设置

太大:恢复时可能需要很长时间

太小:可能导致一个事务需要多次切换重做日志文件;会导致async checkpoint,导致性能抖动。

错误日志警告信息:

InnoDB:ERROR:the age of the last checkpoint is 9433645,InnoDB:which exceeds the log group capacity 9433498.

解析:重做日志有个capacity变量,代表最后的检查点不能超过这个阈值,如果超过,必须将缓冲池中脏页列表(flush list)中的部分脏数据页写回磁盘,这是会导致用户线程的阻塞。

<3>.二进制日志和重做日志的对比:

1.类别

二进制日志:记录MySQL数据库相关的日志记录,包括InnoDB,MyISAM等其它存储引擎的日志。

重做日志:只记录InnoDB存储引擎本身的事务日志。

2.内容

二进制日志:记录事务的具体操作内容,是逻辑日志。

重做日志:记录每个页的更改的物理情况。

3.时间

二进制日志:只在事务提交完成后进行写入,只写磁盘一次,不论这时事务量多大。

重做日志:在事务进行中,就不断有重做日志条目(redo entry)写入重做日志文件。

<4>.重做日志条目

1.条目基本格式

redo_log_type (1字节)

space (压缩后可能<4字节)

page_no

redo_log_body

reod_log_type: 占用1字节,表示重做日志类型。各种不同操作有不同的重做日志格式,但有基本的格式。

space:表空间的ID,采用压缩的方式,占用空间可能小于4字节。

page_no:页的偏移量,同样采用压缩方式

redo_log_body:每个重做日志的数据部分,恢复时需要调用相应的函数解析。

<5>.写入过程

1.重做日志信息 先写入 重做日志缓冲 再按一定条件顺序写入重做日志文件!

2.redo log buffer 向 redo log file 写,是按512个字节,也就是一个扇区的大小进行写入。扇区是写入的最小单位,一定能写入成功,因此过程中不需要double write.

mysql重做日志_MySQL-重做日志 redo log -原理相关推荐

  1. mysql重做日志与binlog日志区别_MySQL日志之binlog、redo log、undo log

    1. binlog(二进制日志) 1.1 binlog介绍 binlog记录了对数据库执行更改的所有操作(不包括查询),还包括了执行数据库更改操作的时间和执行时间等信息.binlog主要有两个作用:恢 ...

  2. mysql 重做日志原理_MySQL-重做日志 redo log -原理

    [redo log buffer][redo log file]-原理 目录: 1.重做日志写入过程图 2.相关知识点汇总图 3.redo_log_buffer 原理 4.redo_log_file ...

  3. mysql的事务日志_MySQL 事务日志

    重做日志(Redo log) 重做日志(Redo log),也叫做前滚日志,存放在如下位置,轮询使用,记录着内存中数据页的变化,在事务 ACID 过程中,主要实现的是 D(Durability)的作用 ...

  4. mysql innodb redolog_MySQL · 引擎特性 · InnoDB redo log漫游(转)

    前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样, ...

  5. mysql innodb log_MySQL · 引擎特性 · InnoDB redo log漫游

    前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性. 和大多数关系型数据库一样, ...

  6. mysql重做日志_MySQL重做日志相关

    Ⅰ.事务的实现 这里我们先抛出答案,通过答案再展开分析 特性实现 A(原子性) redo C(一致性) undo I(隔离性) lock D(持久性) redo/undo 本节针对redo展开分析 Ⅱ ...

  7. 必须了解的MySQL三大日志:binlog、redo log和undo log

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者: 六点半起床 juejin.im/post/68602522 ...

  8. binlog日志_MySQL三大日志binlog、redo log和undo log

    点击蓝色"JavaKeeper"关注我哟 加个"星标",一起成长,做牛逼闪闪的技术人 Keeper导读:日志是mysql数据库的重要组成部分,记录着数据库运行期 ...

  9. mysql 错误 日志_MySQL 错误日志(Error Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定义mysqld内 ...

最新文章

  1. Unity 一个脚本调用另一个脚本的函数
  2. centos7上systemd详解
  3. service get list一般规范
  4. 4,表查询语法,表连接,子查询
  5. 程序员如何用代码彻底终结系统那些事儿?
  6. EasyUI:datagrid清空所有选择行
  7. LeetCode:每日一题(2020.4.6)
  8. VS快速定位文件、代码插件——DPack
  9. Atheros QCA8337交换芯片驱动开发
  10. 视频录制工具OBS选择区域录制
  11. 【Java合并图片】使用Java实现两张图片合并成一张图片的功能(水平合并、垂直合并、透明背景颜色)
  12. OpenLayers教程:图形绘制之绘制几何图形
  13. java提取图片文字
  14. 有事的一天,小事一大堆......
  15. 拭目以待 英国女将谢洛克或将谱写飞镖传奇
  16. 袁萌:Linux的十项重要进展
  17. 【C++】const与指针
  18. 美乐:用优雅的方式赚钱 感性的方式做音乐
  19. 华为凭什么厚积薄发?脚步广告解析任正非三大方法论
  20. 从站代码迁移,基于stm32f103与LAN9252

热门文章

  1. LOADRUNNER8.1中文版加10000客户端破解补订
  2. mysql 求bit 某位为1_mysql按位的索引判断值是否为1
  3. perl 安装GD 出错解决方案
  4. win10怎么放计算机在桌面,win10我的电脑怎么放在桌面
  5. 小技巧教你解决此windows副本不是正版的问题
  6. Wine下完美安装QQ 2010:
  7. ubuntu shell简介
  8. 好的产品经理,应该有什么样的特质?
  9. tez什么意思_传统数仓和大数据数仓的区别是什么?
  10. linux etc 服务启动脚本,linux 服务脚本启动问题