当前位置:   article > 正文

binlog和redolog到底有啥区别,数据恢复到底用哪个_为什么不用redolog恢复数据

为什么不用redolog恢复数据

适用对象不同

binlog 是 MySQL 的 Server 层实现的日志,所有存储引擎都可以使用;
redo log 是 Innodb 存储引擎实现的日志;

文件格式不同

binlog是逻辑日志
redolog是物理日志
在这里插入图片描述

写入方式不同

binlog 是追加写,写满一个文件,就创建一个新的文件继续写,不会覆盖以前的日志,保存的是全量的日志。
redo log 是循环写,日志空间大小是固定,全部写满就从头开始,保存未被刷入磁盘的脏页日志。

用途不同

binlog 用于备份恢复、主从复制;
redo log 用于掉电等故障恢复。

那数据库被删库跑路了,我们用啥回复?

redolog行吗?他不行,因为redolog是循环写的,旧的会被覆盖掉,所以只能是binlog
binlog 文件保存的是全量的日志,也就是保存了所有数据变更的情况,理论上只要记录在 binlog 上的数据,都可以恢复,所以如果不小心整个数据库的数据被删除了,得用 binlog 文件恢复数据。

那为啥崩溃恢复不用binlog,而用redolog?

在这里插入图片描述
其实这个说的一半对一半不对,binlog的能力是可以做数据恢复的,只不过用这个来做崩溃恢复有点麻烦。
用全量备份重搭实例,再利用增量binlog备份,恢复到误操作之前的状态。然后跳过误操作的SQL,再继续应用binlog。此法费时费力,不值得再推荐。
我们可以用binlog来恢复,只不过需要解析日志。但是用redo log恢复数据的话,就不需要再去解析日志的操作,直接对数据页进行操作,速度当然会更快。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/788384
推荐阅读
相关标签
  

闽ICP备14008679号