redo log和binlog

2020-05-15  本文已影响0人  HannahLi_9f1c

redo log与WAL技术

redo log结构
image.png

binlog

binlog与redo log不同,它是用于Server引擎的,用于日志归档的。它是追加日志,不用担心会写满。它会记录更新的逻辑操作,当不小心误删数据库时,可以取最近的一次全量备份,从这个备份恢复到临时库。然后,从备份的时间点开始,将备份的binlog依次取出来,重放到误删的时间点。

binlog和redo log区别

  1. redo log是引擎层特有的,binlog是Server层的,所有引擎都可用。
  2. redo log是物理日志,记录某个数据页的更改。binlog是逻辑日志,记录更新的逻辑。binlog有两种模式,一种是statement格式记录sql语句,一种是row格式,记录行的内容。
  3. redo log是循环写,空间会用完。binlog是追加写,写满会切换下一个。

更新流程

image.png
  1. 执行器先找引擎,引擎搜索B+树找到ID为2的行,如果在内存中,那么返回行数据,否则要先读入到内存中
  2. 执行器拿到行数据,将原来值加一,得到新的一行,再调用引擎写入新数据行。
  3. 引擎将辛淑君更新到内存,并将记录记到redo log。此时redo log处于prepare状态,通知执行器。
  4. 执行器生成binlog,把binlog写入磁盘
  5. 执行器调用引擎提交事务接口,将写入的redo log改成commit。

两阶段提交

两阶段提交可以保证数据的一致性,cash-safe和数据库恢复

参数设置

上一篇 下一篇

猜你喜欢

热点阅读