本文作者:kris

MySQL Binlog 日志处理工具对比分析-mysql binlog日志在哪

kris 2025-01-19 17:06:05 3
MySQL Binlog 日志处理工具对比分析-mysql binlog日志在哪摘要: 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恢复数据了。

bin log

MySQL Binlog 日志处理工具对比分析-mysql binlog日志在哪

图片来源:网络

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.

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

binlog是如何保证事务正确提交?

binlog是MySQL中的二进制日志,用于记录数据库的变更操作。它通过在事务开始和结束时记录对应的BEGIN和COMMIT事件来保证事务的正确提交。

当事务提交时,binlog会将事务的所有操作以二进制格式记录下来,并在写入磁盘之前确保所有操作都已成功执行。

这样,即使在事务提交后发生故障,MySQL可以通过回放binlog来恢复事务的一致性,保证事务的正确提交。

文章版权及转载声明

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

阅读
分享