binlog和redolog到底有啥区别,数据恢复到底用哪个

发布时间:2023年12月20日

适用对象不同

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恢复数据的话,就不需要再去解析日志的操作,直接对数据页进行操作,速度当然会更快。

文章来源:https://blog.csdn.net/pige666/article/details/135103287
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。