相同点
binlog和redolog都是用来记录数据库数据变更操作的日志。
不同点
binlog
其中binlog主要用来做数据备份、数据恢复和数据同步。
大部分人的首次接触是主从数据同步的场景里面。master节点的数据变更会写入到binlog中,然后再把binlog的数据通过网络传输给slave节点,实现数据同步。
redolog
而redolog主要是在MySQL数据库事务的ACID特性里面,用来保证数据的持久化特性。
其他作用(数据库崩溃时)
数据库崩溃时,可以通过RedoLog来恢复未完成的数据,保证数据的完整性。
还可以通过合理的配置Redo Log的大小和数量,优化MySQL的性能。
问题回答
binlog和redolog的区别其实有很多,可以简单总结3个点:
-
使用场景不同
。
binlog主要是用来进行数据备份、数据恢复和主从集群的数据同步。RedoLog主要用来实现MySQL数据库的事务恢复和保证事务的ACID特性。
当数据库出现崩溃时,Redo Log可以把未提交的事务回滚,把已提交的事务进行持久化。从而保证数据的一致性和持久化。
-
记录信息不同
。
binlog是记录数据库的逻辑变化。它提供了三种日志格式,分别是statement、row以及mixed。
redolog记录的是物理变化,也就是数据页的变化结果。
-
记录的时机不同
。
binlog是在执行SQL语句的时候,在主线程生成逻辑变化,写入到磁盘里面。所以它是语句级别的记录方式。
RedoLog是在InnoDB存储引擎层面的操作,它是在MySQL后台线程中去生成,并且写入到磁盘中的。所以它是事务级别的记录方式。一个事务操作完成之后才会被写入到redo log里面。