简介 MySQL日志之redo log和binlog

文 / @UTHEME

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的工作原理,从而更好地保证数据的持久性和一致性。同时,可以更好地避免数据库出现主从不一致的情况。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。