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

文章讲述了MySQL的Binlog与InnoDB的Redolog的区别,包括适用对象、文件格式、写入方式和用途。在数据恢复方面,Binlog更适合备份恢复和主从复制,而Redolog在故障恢复中由于循环写会丢失旧数据。崩溃恢复通常使用全量备份配合Binlog,而非Redolog。
摘要由CSDN通过智能技术生成

适用对象不同

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值