本文作者:kris

手把手教你玩 MySQL 删库不跑路,直接把 MySQL 的 Binlog 玩溜!-mysql从入门到删库

kris 2025-01-23 21:36:04 4
手把手教你玩 MySQL 删库不跑路,直接把 MySQL 的 Binlog 玩溜!-mysql从入门到删库摘要: redo log和bin log存储区别?redo log和bin log都是MySQL中的日志文件,但是它们的作用和存储方式有所不同。redo logredo log是InnoD...

redo log和bin log存储区别?

redo log和bin log都是MySQL中的日志文件,但是它们的作用和存储方式有所不同。

redo log

redo log是InnoDB存储引擎特有的一种日志文件,用于记录数据库的修改操作(增删改)。当执行一个事务时,InnoDB会将修改操作记录到redo log中,然后再将修改操作应用到内存中的数据页中。如果在此期间发生异常导致MySQL崩溃,redo log中的操作可以帮助InnoDB恢复到上一次修改前的状态。

redo log的存储方式是循环写入,当redo log写满后会从头开始覆盖之前的内容。因此,如果MySQL崩溃后重启,redo log中的数据可能已经被覆盖,此时就无法通过redo log恢复数据了。

手把手教你玩 MySQL 删库不跑路,直接把 MySQL 的 Binlog 玩溜!-mysql从入门到删库

图片来源:网络

bin log

bin log是MySQL的一种日志文件,用于记录所有的数据库操作(包括查询和修改)。bin log可以用于数据备份、数据恢复、数据同步等操作。bin log记录的内容包括操作的SQL语句和执行时间等信息。

bin log的存储方式是追加写入,每次写入都会添加到文件末尾。因此,即使MySQL崩溃后重启,bin log中的数据也不会丢失,可以通过bin log进行数据恢复。

综上所述,redo log和bin log都是MySQL中的日志文件,但是它们的作用和存储方式有所不同。redo log用于记录InnoDB存储引擎的修改操作,用于数据恢复;而bin log用于记录所有的数据库操作,用于数据备份、数据恢复和数据同步。

redo log是在InnoDB存储引擎层产生,而binlog是MySQL数据库的上层产生的,并且二进制日志不仅仅针对INNODB存储引擎,MySQL数据库中的任何存储引擎对于数据库的更改都会产生二进制日志。

2.

两种日志记录的内容形式不同。MySQL的binlog是逻辑日志,其记录是对应的SQL语句。而innodb存储引擎层面的redolog日志是物理日志,保存了数据库中的值。

3.

两种日志记录写入磁盘的时间点不同,二进制日志只在事务提交完成后进行一次写

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/26639.html发布于 2025-01-23 21:36:04
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享