我是李福春,我在准备面试,今天的题目是:

mysql的redolog和binlog有什么区别?

答: 如下面的表格,

redolog vs binlog

然后我们扩展一下,因为日志主要是记录的修改日志,分别加深分析一下:

redolog

redolog是innodb存储引擎特有的物理日志,记录的是数据页做了什么改动。

它的存储空间是固定的,类似一个圆环。日志空间写完,需要把相关的操作执行,数据刷到磁盘上释放空间。

redolog可以有效保证mysql的crash-safe; 即mysql系统故障重启,也可以从redolog中恢复;

一般把innodb_flush_log_at_trx_commit=1,即设置redolog每次事务提交日志落盘,可以更有效的保证crash-safe

binlog

是一种mysql-server层的逻辑修改日志,有两种格式:

1,statement格式,记录的是sql;

2, row格式,记录了两行,更新前和更新后的结果;

为了保证系统可以从奔溃状态恢复,设置参数 sync_binlog=1,即事务提交,binlog落盘;

如何快速恢复mysql:

1,找到最近的备份,恢复到临时库;

2,找到备份的binlog,重放到你需要的时刻。

一条update语句历程

比如有一张表:

user(id int primarykey auto_increment ,  age int default 0 )engin=innodb ;

执行一条sql语句:

update user set age=age+1 where id=2 ;

那么,这条update语句是如何经过mysql的体系结构和日志文件呢?

1,执行器首先通过存储引擎读接口得到这行数据;(如果内存有则返回,不存在从硬盘中取出放入内存再返回)

2,执行器把这行数据的age+1,然后调用存储引擎的写接口,写入数据到内存;

3,存储引擎把更新操作写入redolog,日志状态为prepare ,告诉执行器事务完成更新操作;

4,  执行器把这个操作写入binlog,日志落盘;

5,执行器提交事务,调用存储日志写到redolog,日志状态为commit,

binlog,redolog都可以表示事务的状态;

两阶段提交:保证了binlog,redolog在系统奔溃重启之后的事务状态的一致;

小结

本篇分析了redolog和binlog的区别。

然后分别介绍了binlog,redolog所处的mysql的体系结构位置,实际运维过程中的配置参数。

最后追踪了一条update语句的执行历程,以及两种日志的写入过程,然后点明两阶段提交是为了保证两种日志的事务一致性。

原创不易,转载请注明出处。

mysql之日志的更多相关文章

  1. MySQL错误日志总结

    MySQL错误日志是记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息.错误日志的命名通常为hostname.err.其中,hostname表示服务器主机名. ...

  2. mysql数据库服务日志

    mysql数据库服务日志 ①. 错误日志:error_log ②. 普通日志:general_log ③. 慢查询日志:log-slow-query #有3个参数 分割:.mv .编写定时任务并执行: ...

  3. mysql 二进制日志后缀数字最大为多少

    之前看到mysql二进制日志后面会加一个以数字递增为结尾的后缀,一直在想当尾数到达999999后会发生什么情况,先查了一下官网,对后缀有这样一句介绍:The server creates binary ...

  4. MySQL慢日志监控脚本实例剖析

    公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. 1 2 3 ...

  5. MySQL二进制日志的备份和恢复

    二进制日志:记录数据库修改的相关操作,作用是即时点回复,主从复制 可以按时间滚动,也可以按大小滚动 server-id:服务器身份标识 一.二进制文件的删除方法,千万不要手动删除 PURGE BINA ...

  6. mysql 的日志文件

    mysql的日志文件 日志文件大致分为  error log, binary log, query log, slow query log, innodb redo log ;如图: 1.error ...

  7. [转载]mysql慢日志文件分析处理

    原文地址:mysql慢日志文件分析处理作者:maxyicha mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysq ...

  8. ELK监控系统nginx / mysql慢日志

    ELK监控系统nginx / mysql慢日志 elasticsearch logstash kibana ELK监控系统nginx日志 1.环境准备 centos6.8_64 mini IP:192 ...

  9. MySQL 错误日志(Error Log)

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

  10. Mysql Binlog日志详解

    一.Mysql Binlog格式介绍       Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...

随机推荐

  1. WordPress 安装主题、插件时问题解决办法

    --当能够在外网访问到自己的博客时,很多人都会很兴奋吧!如果环境是自己配置的,而不是用的集成环境肯定也会有点小小的成就感. --但是在我兴奋的时候遇到了个小麻烦,下载插件提示我输入FTP信任凭据,输了 ...

  2. 如何在自己的CSDN博客中增添【高大上】的博客栏目?

    前几天看到过一位博主的博客界面,向下看 ☟ (博主对不起啊!把你的公众号给抹了~~~),感觉做这个东西挺好玩的,而且我竟然找不到在哪个地方可以设置!在百度上也没有搜到教程,最后问了一下贺老师知道了入口 ...

  3. 在浏览器中使用ES6的模块功能 import 及 export

    感谢英文原作者 Jake Archibald 的技术分享 各个浏览器对于ES6模块 import . export的支持情况 Safari 10.1. Chrome 61. Firefox 54 – ...

  4. Ubuntu 系统下如何安装pip3工具

    一.[导读]Ubuntu 系统内置了 Python2 和 Python3 两个版本的开发环境,却没有内置相应的 pip3 管理工具,本文将介绍如何在Ubuntu下如何快速安装 pip3 工具,并升级到 ...

  5. java套打快递单

    package org.sq.common.utils; import org.apache.commons.codec.binary.Base64;import org.apache.http.en ...

  6. Flutter保持页面状态AutomaticKeepAliveClientMixin

    使用bottomNavigationBar切换底部tab,再切换回来就会丢失之前的状态(重新渲染列表,丢失滚动条位置). 解决方法 使用 AutomaticKeepAliveClientMixin 重 ...

  7. Java基础面试系列(一)

    Java基础面试总结(一) 1. 面向对象和面向过程的区别 面向过程 面向对象 性能 高于面向对象 类加载的时候需要实例化,比较消耗资源 三易(易维护,易复用,易扩展) 不如面向对象 具有封装,继承, ...

  8. MFC Camera 摄像头预览 拍照

    windows 上开发摄像头程序,比较容易的方式是 OpenCV ,几行代码就能显示出来,但是简单的容易搞,有点难度定制化需求的就不这么容易了.所以说还是要从,最基础的 DirectShow 开始搞起 ...

  9. Excel之在单元格中生成随机密码

    公式 =CHAR(INT(RAND()*26+97))&INT(RAND()*10)&CHAR(INT(RAND()*26+97))&INT(RAND()*10) 分析 CHA ...

  10. TCP报文首部

    源端口和目的端口,各占2个字节,每个TCP报文段都包含源端口号和目的端口号,用于寻找发送端和接收端的应用进程: 序号,占4个字节,序号用来标识从TCP发送端向TCP接收端发送的数据字节流,它表示在这个 ...