请注意,本文编写于 521 天前,最后修改于 521 天前,其中某些信息可能已经过时。
redo log和binlog是MySQL中两种不同的日志,它们分别用于不同的目的,因此需要分开提交。
-
redo log的作用:
- redo log是InnoDB存储引擎的事务日志,用于确保数据的持久性和一致性。
- 当事务提交时,redo log会先将修改的数据记录到日志文件中,然后再将数据写入磁盘数据文件。
- 如果系统崩溃或断电,通过redo log可以将未写入磁盘的数据恢复回来,确保数据的完整性。
-
binlog的作用:
- binlog是MySQL的二进制日志,用于记录数据库的所有修改操作,包括增删改等。
- binlog可以用于数据恢复、数据备份、主从复制等场景。
- binlog是以事件的形式记录的,可以通过解析binlog来还原数据库的修改历史。
为什么需要分开提交呢?主要有以下几个原因:
-
数据持久性和一致性:
- redo log的目的是确保数据的持久性和一致性,即使系统崩溃或断电,也能够将未写入磁盘的数据恢复回来。
- 为了保证数据的一致性,redo log的提交是在事务的数据写入磁盘之前进行的。
-
性能考虑:
- redo log是基于磁盘的顺序写,而binlog是基于磁盘的随机写。
- 顺序写比随机写更高效,因此将redo log的提交和binlog的写入分开可以提高性能。
-
数据备份和恢复:
- redo log和binlog都可以用于数据备份和恢复,但它们的使用场景和目的不同。
- redo log主要用于恢复未写入磁盘的数据,而binlog主要用于还原数据库的修改历史。
- 将redo log和binlog分开提交可以更好地控制数据的备份和恢复过程。
redo log和binlog需要分开提交是为了保证数据的持久性和一致性,提高性能,并更好地支持数据备份和恢复的需求。
Learn more:
- 【2021-07-16】为什么redo log 需要两阶段提交? | daily-a
- 3000帧动画图解MySQL为什么需要binlog、redo log和undo log | HeapDump性能社区
- redolog与binlog为什么需要两阶段提交?-腾讯云开发者社区-腾讯云
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!