MySQLMySQL 的 redo log 和 binlog 区别

Posted 九师兄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQLMySQL 的 redo log 和 binlog 区别相关的知识,希望对你有一定的参考价值。

1.概述

2. 为什么需要 redo log?

redo log 主要用于 mysql 异常重启后的一种数据恢复手段,确保了数据的一致性。

其实是为了配合 MySQL 的 WAL 机制。因为 MySQL 进行更新操作,为了能够快速响应,所以采用了异步写回磁盘的技术,写入内存后就返回。但是这样,会存在 crash后 内存数据丢失的隐患,而 redo log 具备 crash safe 的能力。

3.crash-safe 能力

为什么 redo log 具有 crash-safe 的能力,是 binlog 无法替代的?

第一点:redo log 可确保 innoDB 判断哪些数据已经刷盘,哪些数据还没有

  • redo log 和 binlog 有一个很大的区别就是,一个是循环写,一个是追加写。也就是说 redo log 只会记录未刷盘的日志,已经刷入磁盘的数据都会从 redo log 这个有限大小的日志文件里删除。binlog 是追加日志,保存的是全量的日志。

  • 当数据库 crash 后,想要恢复未刷盘但已经写入 redo log 和 binlog 的数据

创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

以上是关于MySQLMySQL 的 redo log 和 binlog 区别的主要内容,如果未能解决你的问题,请参考以下文章

说说MySQL中的Redo log Undo log都在干什么

(转)MySQL学习笔记-redo log 和 binlog&两阶段提交

mysql中redo log 和 bin log的流程及区别

纯手绘图解 - MySQL undo log、redo log、binlog

online redo log 和undo各有啥作用

日志:Redo Log 和 Undo Log