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

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

目录:

1.重做日志写入过程图

2.相关知识点汇总图

3.redo_log_buffer 原理

4.redo_log_file 原理

1. 重做日志写入过程:

c8028f60e3b4c1f4c6625290d932b98d.png

2. 相关知识点汇总:

c866b41420dc9af8ddf36530feceebd2.png

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.mzph.cn/news/364269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 8 Friday:使用Streams API时的10个细微错误

在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五&#xff0c;我们都会向您展示一些不错的教程风格的Java 8新功能&#…

孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1

孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1 &#xff08;完整学习过程屏幕记录视频地址在文末&#xff09; 感觉用requests获取到网页的html源代码后&#xff0c;更重要的工作其实是分析得到的内容&#xff0c;因此这时候大名鼎鼎的BeautifulSoup模块就可以大展…

如何将h5网页改成微信网页

1、如何将h5网页改成微信网页 1、设置安全域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 备注&#xff1a;登录后可在“开发者中心”查看对应的接口权限。 2、引用一个js文件 在微信开发者里面 js sdk里面 <sc…

AspNetForums中基于角色的权限控制

AspNetForums中基于角色的权限控制 http://blog.joycode.com/dotey/archive/2005/02/24/44791.aspxasp.net页面如何控制页面依据不同用户权限有不可见、可见、编辑 三种操作权限 http://community.csdn.net/Expert/topic/3436/3436974.xml?temp.0139429做过权限管理和想做权限…

c#a服务器上传文件b服务器,C#_c#批量上传图片到服务器示例分享,客户端代码: 复制代码 代码 - phpStudy...

c#批量上传图片到服务器示例分享客户端代码&#xff1a;/// /// 批量上传图片/// /// 服务器路径/// 图片文件夹路径/// 图片名称public void UpLoadFile(string srcurl, string imagesPath, List files){int count 1;foreach (string imageName in files){string name image…

mysql集群重启offline_mysql集群搭建问题及解决方法集锦

在上一篇博客中写了如何搭建mysql集群&#xff0c;之所以遇到这些问题&#xff0c;是因为刚开始弄mysql集群的时候不熟悉&#xff0c;正是因为这些问题&#xff0c;让我对mysql集群的了解渐渐深入&#xff0c;下面介绍在搭建mysql集群的时候我遇到了一些问题。1、mysql集群安装…

C - CJSON

cJSON API说明cJSON_Version()获得cJSON的版本cJSON_InitHooks();初始化cJSON_Hooks结构体cJSON_Parse();将字符串解析成cJSON结构体cJSON_ParseWithOpts()使用一些配置解析字符串cJSON_Print()将cJSON结构体转换成格式化的字符串cJSON_PrintUnformatted()将cJSON结构体转换成…

Java SE 8新功能导览:Java开发世界中的重大变化

与其他专业团队成员一样&#xff0c;我是采用OpenJDK的成员之一&#xff0c;但是从最近8个月开始加入&#xff0c;我们经历了Java SE 8 开发&#xff0c;编译&#xff0c;编码&#xff0c;讨论等各个阶段&#xff0c;直到将其付诸实践为止。 。 它于2014年3月18日发布&#xff…

蘑菇街一电话面试1

说说你常用的技术栈&#xff1f; ajax解决跨域问题的方法&#xff1f;jsonp的主要实现原理&#xff1f; 点击页面某个按钮&#xff0c;将原本一行显示的内容分成两行&#xff0c;如何实现&#xff1f; 怎样实现段首缩进&#xff1f;值是什么&#xff1f; 如何实现文本限制显示两…

从Java官网下载最新的文档(包含API文档)

Java学习资料(适合c转java的同学)&#xff1a; Java中带包&#xff08;创建及引用&#xff09;的类的编译 - 小明快点跑 JAVA 对象引用&#xff0c;以及对象赋值 - 飘来荡去。 Java官网下载页&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/index.html…

12121

sdfsfsfdsf转载于:https://www.cnblogs.com/zhongkeruanjian/archive/2006/06/01/414875.html

html option ajax,Ajax实现简单下拉选项效果【推荐】

基本都是固定步骤&#xff01;主要在JAVASCRIPT和PHP中的操作1、HTML代码里就只有两个SELECT标签如下&#xff1a;请选择请选择2、Javascript中进行创建选项和执行AJAX异步请求步骤如下var xhr getXhr();// 第一次执行Ajax异步请求 - 省份window.onload function(){xhr.open(…

svn安装教程 mysql_CentOS6.4 下安装SVN的详细教程(超详细)

1、检查系统是否已经安装如果安装就卸载rpm -qa subversionyum remove subversion2、安装yum install subversion3、建立SVN库mkdir -p /home/svn/repossvnadmin create /home/svn/repos执行上面的命令后&#xff0c;自动建立repositories库&#xff0c;查看/home/svn/repos 文…

babel安装

注意&#xff1a;如果没有装node.js&#xff0c;先去装一个&#xff01;&#xff01;安装node.js时会默认安装npm。 步骤&#xff1a; 1、新建一个文件夹&#xff0c;装接下来的所有东西。我新建了一个learn-es6文件夹 2、在learn-es6项目文件下创建根目录文件&#xff1a; …

针对新手的Java EE7和Maven项目–第1部分–简单的Maven项目结构–父pom

为什么呢 很多时候&#xff0c;我在日常工作中试图解决一些基本或复杂的Maven / Java EE项目结构问题。 为了提供解决方案&#xff0c;我经常最终会尝试项目结构&#xff0c;测试我在不同应用程序服务器上的部署并细化我的配置。 Maven对于新来者来说可能会有陡峭的学习曲线&a…

sql server 学习记录

sql-server 基础&#xff1a; 1、查看sqlserver的数据表 SELECT name,crdate FROM SysObjects Where XTypeU order by crdate desc 查看数据表的字段 SELECT A.name AS table_name,B.name AS column_name,C.value AS column_description FROM sys.tables A INNER JOIN sys.col…

简单对象访问协议

简单对象访问协议 2000年7月11日 SOAP 是“简单对象访问协议”&#xff08;Simple Object Access Protocol&#xff09;的简称&#xff0c;这种方式能够使用现有的 Internet 体系结构&#xff0c;创建运行在 Internet 上的、分布广泛的复杂计算环境。SOAP 所涉及的应用程序以非…

mysql 子字符串函数_MySQL 内置字符串函数

MySQL内置函数concat()用于连接字段LTRIM(),RTRIM(),TRIM()分别用于去除左边空格,右边空格,以及左右空格都去除NOW()放回当前的日期和时间UPPER() 和LOWER()upper():转换为年夜写输出; lower() 转换为小写输出LEFT()返回串左边的字符RIGHT()返回串右边的字符,办法参考LEFT()LOC…

服务器建网站www无法访问,IIS6服务器搭建网站无法访问解决方案总结_DOIT.com.cn...

很多朋友在用IIS6架网站的时候遇到不少问题&#xff0c;而这些问题有些在过去的IIS5里面就遇到过&#xff0c;有些是新出来的&#xff0c;俺忙活了一下午&#xff0c;做了很多次试验&#xff0c;结合以前的排错经验&#xff0c;做出了这个总结&#xff0c;希望能给大家帮上忙。…

弱监督学习下商品识别:CVPR 2018细粒度识别挑战赛获胜方案简介

弱监督学习下商品识别&#xff1a;CVPR 2018细粒度识别挑战赛获胜方案简介 细粒度视觉分类&#xff08;FGCV&#xff0c;Fine-Grained Visual Categorization&#xff09;即识别细分类别的任务&#xff0c;一般它需要同时使用全局图像信息与局部特征信息精确识别图像子类别。细…