mysql innodb redolog_Mysql的binlog 和InnoDB的redo-log

mysql日志系统之redo log和bin log

format,png

12018.12.02 01:35:06字数 997阅读 3,248

首先,我们先来看看一次查询/更新语句流程图

format,png

mysql查询/更新流程图.png

本文会将重点放在执行器存储引擎之间的交互。

mysql不是每次数据更改都立刻写到磁盘,而是会先将修改后的结果暂存在内存中,当一段时间后,再一次性将多个修改写到磁盘上,减少磁盘io成本,同时提高操作速度。

mysql通过WAL(write-ahead logging)技术保证事务

在同一个事务中,每当数据库进行修改数据操作时,将修改结果更新到内存后,会在redo log添加一行记录记录“需要在哪个数据页上做什么修改”,并将该记录状态置为prepare,等到commit提交事务后,会将此次事务中在redo log添加的记录的状态都置为commit状态,之后将修改落盘时,会将redo log中状态为commit的记录的修改都写入磁盘。过程如下图

format,png

更新流程.png

redo log记录方式

redolog的大小是固定的,在mysql中可以通过修改配置参数innodb_log_files_in_group和innodb_log_file_size配置日志文件数量和每个日志文件大小,redolog采用循环写的方式记录,当写到结尾时,会回到开头循环写日志。如下图

format,png

redolog记录方式.png

write pos表示日志当前记录的位置,当ib_logfile_4写满后,会从ib_logfile_1从头开始记录;check point表示将日志记录的修改写进磁盘,完成数据落盘,数据落盘后checkpoint会将日志上的相关记录擦除掉,即write pos->checkpoint之间的部分是redo log空着的部分,用于记录新的记录,checkpoint->write pos之间是redo log待落盘的数据修改记录。当writepos追上checkpoint时,得先停下记录,先推动checkpoint向前移动,空出位置记录新的日志。

有了redo log,当数据库发生宕机重启后,可通过redo log将未落盘的数据恢复,即保证已经提交的事务记录不会丢失。

有了redo log,为啥还需要binlog呢?

1、redo log的大小是固定的,日志上的记录修改落盘后,日志会被覆盖掉,无法用于数据回滚/数据恢复等操作。

2、redo log是innodb引擎层实现的,并不是所有引擎都有。

基于以上,binlog必不可少

1、binlog是server层实现的,意味着所有引擎都可以使用binlog日志

2、binlog通过追加的方式写入的,可通过配置参数max_binlog_size设置每个binlog文件的大小,当文件大小大于给定值后,日志会发生滚动,之后的日志记录到新的文件上。

3、binlog有两种记录模式,statement格式的话是记sql语句, row格式会记录行的内容,记两条,更新前和更新后都有。

binlog和redo log必须保持一致,不允许出现binlog有记录但redolog没有的情况,反之亦然。之前说过在一个事务中,redolog有prepare和commit两种状态,所以,在redolog状态为prepare时记录binlog可保证两日志的记录一致,下图列出各种情况来说明。

format,png

4.png

现在我们再来看看整个完整的流程图

format,png

更新流程.png

相关参数设置建议:

1、innodb_flush_log_at_trx_commit:设置为1,表示每次事务的redolog都直接持久化到磁盘(注意是这里指的是redolog日志本身落盘),保证mysql重启后数据不丢失。

2、sync_binlog: 设置为1,表示每次事务的binlog都直接持久化到磁盘(注意是这里指的是binlog日志本身落盘),保证mysql重启后binlog记录是完整的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344040.shtml

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

相关文章

光纤收发器按照网管怎么分类?

光纤收发器,是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元,在很多地方也被称之为光电转换器(Fiber Converter),那么,光纤收发器按照网管怎么分类的?接下来我们…

电话光端机和PDH光端机的区别

电话光端机就是把传统的电话信号转换成光信号,可通过光纤传输电话、以太网、音频的设备,让电话信号能够传输的更长距离,而且传输速率上也有很大的提高。电话光端机和PDH光端机用法各不一样,而PDH光端机简单的说是通过光纤来传输E1信号和100M以太网信号。…

jcmd,大约JDK 11

NicolasFrnkel最近在博客文章“ 行业工具OpenJDK 11 ”中发布了与OpenJDK 11一起提供的命令行工具的调查。 在那篇文章中,他简要总结了工具jps (一个JVM进程状态工具 ), jinfo (一个JVM配置详细信息 )&…

android 保存文件_Android 数据库操作框架LitePal使用介绍(一)

在Android开发中,前端开发很多情况数据都是从服务器端获取的,使用本地数据库的情况可能不会太常见。有一些需要本地保存的配置数据,也是使用Hawk框架等本地缓存框架进行保存。但是对于如果是一些需要本地保存的,又是大量的数据时&…

PDH光端机常见故障问题解决方法

在数字通信传输系统中,有两种数字光端机系列,一种叫“准同步数字系列光端机”(PlesiochronousDigitalHierarchy),简称PDH光端机;另一种叫“同步数字系列光端机”(SynchronousDigitalHierarchy&a…

安防监控专用工业交换机与普通交换机的区别

工业交换机即工业以太网交换机,它作用是放到路由器后端,来扩展路由器接口,以解决接口不够用的问题。以太网在设计时,由于其采用载波侦听多路复用冲突检测(CSMA/CD机制),在复杂的工业环境中应用,其可靠性大大…

电话光端机与PCM复用设备的区别

电话光端机与PCM复用设备,都是使用标准PCM脉冲编码调制技术,具备滤波功能,使语音通话更清晰稳定!设备采用专用数字复接芯片,它将设备中的数字逻辑功能几乎全部集成,从而提高了产品的性能,且每路…

选择安防交换机时需要避免哪些误区呢?

安防交换机是专为家庭、学校宿舍、办公室、小型监控等简易网络环境设计,是一种非常常用的一种交换机设备,那么我们在采购安防交换机的时候,是否有很多人都存在误区,造成踩雷,选择到劣质设备,可以说花不少的…

简而言之SPIFFE

我一直在研究SPIFEE(每个人的安全生产身份框架)[1],在这里,我正在按照我现在的理解起草流程,以使任何试图理解流程的人受益。 身份注册表 – SPIRE服务器具有自己的身份注册表,该注册表保留两个粗粒度属性…

c++ 多个字符串排序_Python小白干货宝典:sorted()函数:列表元素排序

定义:sorted() 函数对所有可迭代的对象进行排序操作。内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。语法:sorted 语法:sorted(iterable, cmpNone, keyNone, reverseFalse)返回值:返回重…

工业级以太网交换机的使用情况分析

工业级以太网交换机是专门为满足灵活多变的工业应用需求而设计,提供一种高性价比工业以太网通讯解决方案。工业以太网交换机,作为我们广为使用的局域网硬件设备,一直为大家所熟悉。它的普及程度其实是由于以太网的广泛使用,作为今…

工业级以太网交换机产品特征及应用案例介绍

工业以太网交换机(简称工业交换机)是专门为满足灵活多变的工业应用需求而提供的一种高性价比的组网设备。针对工业控制的实际需求,工业交换机解决了通信实时性、网络可用性能和安全性等技术问题。与普通商业交换机相比,工业交换机…

mysql 热块_MySQL分布式集群之MyCAT(三)rule的分析【转】

首先写在最前面,MyCAT1.4的alpha版本已经发布了,这里面修复了不少的bug,也完善了一细节,之前两篇博客已经做了一些修改---------------------------------------------------------------------------------这才是本体~----------…

工业交换机的四种安装方式图解

工业交换机的作用可以说是非常强大的,其应用十分广泛,在电力、轨道交通、市政、煤矿安全、工厂自动化、水处理系统、城市安防等都有它的身影,为现代生活智能化的发展提供了非常大的助力。但是由于使用环境的原因,在安装工业交换机…

rpm mysql 更改目录_rpm形式安装的MySQL服务 并 修改数据文件目录( red hat)_mysql...

rpm方式安装的mysql服务 并 修改数据文件目录( red hat)卸载mysql1、查找以前是否装有mysql命令:rpm -qa|grep -i mysql可以看到mysql的两个包:mysql-*..*.RHEL**mysqlclient*.RHEL**2、删除mysql删除命令:rpm -e --nodeps 包名( rpm -ev mys…

python参数化建模 书_Python 中如何实现参数化测试?

之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架。本文想针对测试中一种很常见的测试场景,即参数化测试,继续聊聊关于测试的话题,并尝试将这…

反模式设计_设计模式:模式或反模式,这就是问题

反模式设计我最近遇到了Wiki页面“ Anti-pattern” ,其中包含详尽的反模式列表。 其中一些对我来说很明显。 他们中的一些让我想了一下,其他的让我想了更多。 然后,我开始在页面上查找反模式“ singleton”,但找不到。 &#xff0…

js中的数据类型分为两大类分别是什么_数据类型有这么重要吗?

一个没有得到重视的知识点, 数据类型 每种语言都有自己的数据类型,下面以javascript为例 类型的分类 js的数据类型可以分为 两大类: 1,值类型 (String,Number,undefined,Boolean,null) 2,引入类型(Object,Function,Array) 个人理解也可以把值类型和引入类型分为简单类型和复杂类…

监控系统几种常见的光端机传输方案拓扑图

近几年随着模拟摄像机被网络摄像机以及高清同轴摄像机取代,在光纤传输层,之前使用量比较大的视频光端机也逐渐被光纤收发器、POE交换机、网络交换机等网络光通信设备取代掉。目前市场上音频、数据、开关量、电话、对讲等信号依然可以通过光端机来进行传输…

在等待Jakarta EE时

自甲骨文在JavaOne 2017宣布将Java™EE转移到Eclipse Foundation以来已有一年多了。此后发生了很多事情: Java™EE 8 API和实现项目已在EE4J下建立 。 Eclipse GlassFish 5.1 版本即将发布 。 全新的Jakarta EE规范流程指日可待。 社区显示出有关Jakarta EE技术…