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

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语句的执行历程,以及两种日志的写入过程,然后点明两阶段提交是为了保证两种日志的事务一致性。

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

最新文章

  1. 【从零开始学习Hadoop】--1.Hadoop的安装
  2. ios程序发布测试打包
  3. block的复习
  4. __slots__ 属性绑定
  5. Windows Phone 8.1商店启动协议
  6. [Effective JavaScript 笔记] 第6条:了解分号插入的局限
  7. JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取
  8. 控制执行流程 Thinking in Java 第四章
  9. bzoj1216 [HNOI2003]操作系统
  10. unigui TUniTreeView demo
  11. JS运动学习笔记 -- 任意值的运动框架(高/宽度,背景颜色,文本内容,透明度等)
  12. Hibernate -- 注解(Annotation)关系映射
  13. [hihoCoder]1014 Trie水题
  14. Vim常用操作-快速删除括号中内容。
  15. “玲珑杯”ACM比赛 Round #13 题解&源码
  16. celery使用
  17. JDK源码中使用的设计模式
  18. Kendo ui 入门知识点
  19. Expm 7_2区间调度问题
  20. 【NOIP 2018】Day2 T3 保卫王国

热门文章

  1. Ubuntu18.04LTS安装docker报错:Command 'lsb_release' not found
  2. preload & prefetch
  3. window.showModalDialog与window.open()使用
  4. CSS实现响应式布局
  5. Flutter 拖拽排序组件 ReorderableListView
  6. Python——工厂模式
  7. python之三元表达式,列表|字典推导式,函数对象
  8. ES6的原始类型数据——Symbol
  9. 【剑指Offer】简单部分每日五题 - Day 1
  10. drf认证组件(介绍)、权限组件(介绍)、jwt认证、签发、jwt框架使用