简介 MySQL日志之redo log和binlog
文 / @WordPress主题
MySQL数据库是一种关系型数据库管理系统,有两种主要类型的日志:redolog和binlog。Redolog是InnoDB引擎特有的,它记录了“在XXX数据页上做了XXX修改”,属于物理日志,是为了提高性能而设计的。而Binlog是MySQL的Server层实现的,所有引擎都可以使用,它记录了原始逻辑,是为了保持数据逻辑一致性而设计的。
Redolog是循环写的,空间会用完,因此需要writepos和checkpoint搭配。Binlog是追加写的,写到一定大小会切换到下一个,不会覆盖以前的日志。Redolog可以保存crash-safe能力,可以保证MySQL异常重启时数据不丢失。Binlog可以记录对应的SQL语句,也可以保证MySQL异常重启时数据不丢失。两个日志的主要区别在于记录的内容不同,以及Redolog是物理日志,而Binlog是逻辑日志。
提交事务时的“两阶段提交”可以保证Redolog和Binlog之间的状态逻辑上一致。Redolog和Binlog都可以用于表示事务的提交状态。Redolog记录了事务修改的物理状态,而Binlog记录了原始SQL语句,这种两阶段提交的方式保证了数据逻辑的一致性。
因此,Redolog和Binlog的区别和使用场景是不同的。了解这些区别后,使用MySQL时可以更好地理解和管理Redolog和Binlog的工作原理,从而更好地保证数据的持久性和一致性。同时,可以更好地避免数据库出现主从不一致的情况。

相关文章
-
MySQL Workbench怎么建立数据库(附:sql语句创建数据库方法) 2023-07-20 12:22:29
-
MySQL Workbench是什么?(附:如何设置中文教程) 2023-07-20 11:42:31
-
一起聊聊MySQL主从延时的处理方案 2023-05-14 07:00:03
-
mysql怎么将查询结果赋给变量 2023-05-14 07:00:03
-
mysql驱动是什么 2023-05-14 07:00:03
-
qt5.8如何连接mysql 2023-05-14 07:00:03
-
MySQL 语法整理介绍 2023-05-14 07:00:03
-
mysql修改表结构的语句是什么 2023-05-14 07:00:03
-
mysql乐观锁和悲观锁的区别是什么 2023-05-14 07:00:03
-
mysql查询怎么区分大小写 2023-05-14 07:00:02