binlog和redolog的区别

  • Post author:
  • Post category:其他




相同点

binlog和redolog都是用来记录数据库数据变更操作的日志。



不同点



binlog

其中binlog主要用来做数据备份、数据恢复和数据同步。

大部分人的首次接触是主从数据同步的场景里面。master节点的数据变更会写入到binlog中,然后再把binlog的数据通过网络传输给slave节点,实现数据同步。



redolog

而redolog主要是在MySQL数据库事务的ACID特性里面,用来保证数据的持久化特性。



其他作用(数据库崩溃时)

数据库崩溃时,可以通过RedoLog来恢复未完成的数据,保证数据的完整性。

还可以通过合理的配置Redo Log的大小和数量,优化MySQL的性能。



问题回答

binlog和redolog的区别其实有很多,可以简单总结3个点:


  1. 使用场景不同

binlog主要是用来进行数据备份、数据恢复和主从集群的数据同步。RedoLog主要用来实现MySQL数据库的事务恢复和保证事务的ACID特性。

当数据库出现崩溃时,Redo Log可以把未提交的事务回滚,把已提交的事务进行持久化。从而保证数据的一致性和持久化。


  1. 记录信息不同

binlog是记录数据库的逻辑变化。它提供了三种日志格式,分别是statement、row以及mixed。

redolog记录的是物理变化,也就是数据页的变化结果。


  1. 记录的时机不同

binlog是在执行SQL语句的时候,在主线程生成逻辑变化,写入到磁盘里面。所以它是语句级别的记录方式。

RedoLog是在InnoDB存储引擎层面的操作,它是在MySQL后台线程中去生成,并且写入到磁盘中的。所以它是事务级别的记录方式。一个事务操作完成之后才会被写入到redo log里面。


参考资料



【Java面试】Mic老师面试题满分解析,binlog和redolog有什么区别?



版权声明:本文为qq_46130027原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。