MySQL日志文件:bin log 和 redo log 的区别

首先,bin log 和 redo log 都是 Mysql 里面用来记录数据库数据变更操作的日志。

(如图)其中 binlog 主要用来做数据备份、数据恢复和数据同步,大家初步接触这个 概念 ,应该是在 Mysql 的主从数据同步的场景中,master 节点的数据变更,会写入 到 bin log 中,然后再把 bin log 中的数据通过网络传输给 slave 节点,实现数据同步。 而 redo log,主要是在 Mysql 数据库事务的 ACID 特性里面,用来保证数据的持久化特性。但是其实它还有很多的作用。 比如数据库崩溃时,可以通过 Redo Log 来恢复未完成的数据,保证数据的完整性。 通过合理的配置 Redo Log 的大小和数量,还可以优化 Mysql 的性能。 那下面来看下这个面试题的回答吧。

bin log 和 redo log 的区别有很多,可以简单总结三个点

1. 使用场景不同,bin log 主要用来做数据备份、数据恢复、以及主从集群的数据同步; Redo Log 主要用来实现 Mysql 数据库的事务恢复,保证事务的 ACID 特性。当数据库出现崩溃的时候,Redo Log 可以把未提交的事务回滚,把已提交的事务进行 持久化,从而保证数据的一致性和持久性。

2. 记录的信息不同,bin log 是记录数据库的逻辑变化,它提供了三种日志格式分别是 statement,row 以及 mixed; redo log 记录的是物理变化,也就是数据页的变化结果。

3. 记录的时机不同, bin log 是在执行 SQL 语句的时候,在主线程中生成逻辑变化写 入到磁盘中,所以它是语句级别的记录方式; Redo Log 是在 InnoDB 存储引擎层面的操作,它是在 Mysql 后台线程中生成并写入到磁盘中的,所以它是事务级别的记录方式,一个事务操作完成以后才会被写入到 redo log 中。

此外,MySQL中还有个undo log文件,这个文件可以让事务回滚。为了保证事务的原子性,是把修改之前的数据快照保存到UNDO_LOG里面,一旦出现错误,就直接从UNDO_LOG 里面读取数据执行反向操作就行了。保证一组数据库操作要么都成功,要么都不成功。

事务的ACID特性:原子性、隔离性、持久性、一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值