MySQL三大日志、redo log和bin log的区别【表格对比版】【清晰明了】【简介】【重点】【面试】

MySQL三大日志:

二进制日志 binlog(归档日志)

事务日志 redo log(重做日志)

undo log(回滚日志)。

binlog的写入时机也非常简单,事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。

redo log(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。

binlog 是逻辑日志记录内容是语句的原始逻辑,类似于“给 ID=2 这一行的 c 字段加 1”,属于MySQL Server 层

redo log 它是物理日志记录内容是“在某个数据页上做了什么修改”,属于 InnoDB 存储引擎

可以说MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性

MySQL InnoDB 引擎使用 redo log(重做日志) 保证事务的持久性;redo log(重做日志)让InnoDB存储引擎拥有了崩溃恢复能力。

使用 undo log(回滚日志) 来保证事务的原子性

因为一个事务的binlog不能被拆开,无论这个事务多大,也要确保一次性写入,所以系统会给每个线程分配一个块内存作为binlog cache

binlog是可以追加写⼊的。“追加写”是指binlog⽂件写到⼀定大小后会切换到下⼀个,并不会覆盖以前的日志;

redo log是循环写的,空间固定会用完;

redo log和bin log的区别:

 二进制日志 binlog(归档日志)

事务日志 redo log(重做日志)

是否特有

redo log是InnoDB引擎特有的;

binlog是MySQL的Server层实现的,所有引擎都可以使⽤;

日志特性

redo log是物理日志,记录的是“在某个数据页上做了什么修改”;

binlog是逻辑日志,记录的是这个语句的原始逻辑,比如 “给ID=2这⼀行的c字段加1”;

写入方式

redo log是循环写的,空间固定会用完;

binlog是可以追加写⼊的。“追加写”是指binlog⽂件写到⼀定大小后会切换到下⼀个,并不会覆盖以前的日志;

使用方式

binlog可以作为恢复数据使用,主从复制搭建;

redo log作为异常宕机或者介质故障后的数据恢复使用;

对ACID的贡献

binlog用于保证数据的一致性;

redo log用于保证持久性;

猜你喜欢

转载自blog.csdn.net/jiayoudangdang/article/details/123904230
今日推荐