【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.

原文:http://www.cnblogs.com/cuisi/p/6525077.html

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

  1. mysql数据库undo日志恢复_MySQL的undo/redo日志和binlog日志,以及2PC

    发现自己的知识点有点散,今天就把它们连接起来,好好总结一下. 一.undo log.redo log.binlog的定义和对比 定义和作用 所在架构层级 日志形式 所在文件和默认名称,组织结构 是否缓 ...

  2. 导入数据库显示服务器发生意外,mysql 数据库无法启动(Ignoring the redo log due to missing M...

    mysql 数据库无法启动(Ignoring the redo log due to missing M mysql 数据库无法启动(Ignoring the redo log due to miss ...

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

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

  4. mysql增加重做日志组_mysql重做日志

    一.重做日志(redo log) 1.作用 确保事务的持久性. 防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性. 2 ...

  5. mysql 重做日志 镜像_mysql重做日志 - osc_vr7hvjd2的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.重做日志(redo log) 1.作用 确保事务的持久性. 防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性. 2 ...

  6. mysql 重做日志 镜像_MySQL重做日志

    MySQL重做日志 故障的类型 事物内部故障 系统故障 介质故障 计算机病毒 日志类型 redo log(重做日志) 处理系统故障 undo log 处理事务故障 (回滚) 重做日志 用来实现事物的持 ...

  7. mysql重做日志文件_MySQL 重做日志文件

    一.innodb log的基础知识 · innodb log顾名思义:即innodb存储引擎产生的日志,也可以称为重做日志文件,默认在innodb_data_home_dir下面有两个文件ib_log ...

  8. mysql二进制日志管理_MYSQL二进制日志管理脚本

    MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...

  9. 升级mysql服务器二进制备份_MySQL二进制日志备份和恢复详解

    基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句. 作用: 1.二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二 ...

最新文章

  1. 使用es6实现iview的选项卡切换
  2. 完美世界推穿戴式设备:能消灭“宅玩家”吗?
  3. 64位有符号与无符号类型的整数
  4. 物联网数据终端演进之道
  5. Apache Lens —— 统计数据分析查询接口
  6. mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记
  7. OpenShift 4 - 对镜像进行合规扫描,加固应用镜像安全
  8. C#模拟js的Json对象创建,操作
  9. 计算机网络—TCP协议
  10. django drf 改变retrive的pk查询字段
  11. 扫雷外挂(扫雷辅助程序)
  12. 元旦三天假期,实现一个电商退单管理系统【二】
  13. spiders的使用
  14. 前端中文汉字转换为拼音、拼音首字母的插件Chinese-to-Pinyin
  15. 怎么样用计算机弹出小星星,【钢琴入门自写教程 1】小星星弹奏
  16. 解决git push报错:The requested URL returned error: 403
  17. centos yum清华镜像
  18. 安卓逆向——AS开发Xposed插件demo案例
  19. 其实你也可以制作一款专属的书架app,信不信看看就知道
  20. 基于PaddlePaddle实现的DeepSpeech2端到端中文语音识模型

热门文章

  1. ORAN C平面 Section Extension 7
  2. 微搭低代码基础开发教程
  3. flask爱家租房项目开发(十二)
  4. 新加坡区块链ICO公司是如何注册新加坡公司的
  5. python 源代码 macd双底 高 低_久其软件怎么样MACD指标的双底形态特征详解
  6. 逻辑回归阈值_逻辑回归算法
  7. 《指数基金投资指南》读书笔记_2022002
  8. Java 利用ffmpeg工具实现视频MP4转m3u8
  9. 全院级pacs系统中前置服务器,PACS系统性能优化的实施与体会——蒋昆 李哲 赵海涛...
  10. java读取ppm图片,在Java中将PPM转换为JPG或BMP