有了 bing log,为啥还需要 redo log?

虽然bin log和redo log都可以用于恢复数据,但是它们的目的和使用场景是不同的。bin log记录的是所有修改数据的SQL语句,用于在主从复制环境中同步数据,或者在数据丢失时通过重新执行SQL语句恢复数据。但是bin log是在事务提交后才写入的,所以如果数据库在事务提交前崩溃,那么这个事务的修改就无法通过bin log恢复。

而redo log是为了解决这个问题而设计的。redo log是在事务执行过程中就持续写入的,当事务提交时,必须确保相关的redo log已经写入磁盘。这样就可以保证即使数据库在事务提交前崩溃,也可以通过redo log把这个事务的修改恢复出来。这就是数据库的持久性(Durability)原理。

此外,redo log是物理日志,记录的是数据页的物理修改,而bin log是逻辑日志,记录的是SQL语句,因此在恢复大量数据的时候,redo log通常比bin log更高效。

所以,bin log和redo log在MySQL中都是非常重要的,它们各自解决了不同的问题,不能相互替代。

发表评论

后才能评论