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

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. python爬虫-scrapy日志

    1.scrapy日志介绍 Scrapy的日志系统是实现了对python内置的日志的封装 scrapy也使用python日志级别分类 logging.CRITICAL logging.ERROE log ...

  2. Java入门教程十二(集合与泛型)

    在 Java 中数组的长度是不可修改的.然而在实际应用的很多情况下,无法确定数据数量.这些数据不适合使用数组来保存,这时候就需要使用集合. Java 的集合就像一个容器,用来存储 Java 类的对象. ...

  3. [红日安全]Web安全Day4 - SSRF实战攻防

    本文由红日安全成员: MisakiKata 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目 ...

  4. 压力测试(八)-多节点JMeter分布式压测实战

    1.Jmeter4.0分布式压测准备工作 简介:讲解Linux服务器上jmeter进行分布式压测的相关准备工作 1.压测注意事项 the firewalls on the systems are tu ...

  5. 统计 Django 项目的测试覆盖率

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试.现在 ...

  6. grid实战之微信钱包 腾讯服务界面

    网格布局简介 CSS3网格布局是让开发人员设计一个网格并将内容放在这些网格内.而不是使用浮动制作一个网格,实际上是你将一个元素声明为一个网格容器,并把元素内容置于网格中. 有一些浏览器是不支持网格布局 ...

  7. 原生js实现在表格用鼠标框选并有反选功能

    今天应同学要求,需要写一个像Excel那样框选高亮,并且实现框选区域实现反选功能.要我用原生js写,由于没什么经验翻阅了很多资料,第一次写文章希望各位指出不足!! 上来先建表 <div clas ...

  8. LeetCode 278.First Bad Version(E)(P)

    题目: You are a product manager and currently leading a team to develop a new product. Unfortunately, ...

  9. Kubernetes-PersistentVolumeClaim(PVC)介绍

    1 PVC介绍   PVC是用户层面,作为对存储资源的需求申请,主要包括了存储空间大小.访问模式.PV的选择条件.存储类别等信息的设置. 2 PVC的参数详解 2.1 PVC的yaml模板 apiVe ...

  10. Let’s Encrypt https证书安装

    我的博客: https://www.seyana.life/post/15 现在已经有很多的免费ssl证书提供商,国内的也有, 不过国内政策要求还要把key给他们, 我们还是用Let's Encryp ...