mysql 三大日志

MySQL三大日志?

binlog(归档日志)、redo.log(重做日志) 和undo.log(回滚日志)

redo.log(重做日志):redo.log(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。 比如 MySQL 实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo.log恢复数据,保证数据的持久性与完整性,redo.log两阶段提交,先写入redo.log状态置为prepare,然后写入binlog,然后将redo.log设置为commit状态。

binlog(归档日志):MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性binlog 日志有三种格式:

  • statement:原始的sql语句,优点:占用空间小,缺点,执行的时机不通sql语句的值可能不同,例如time = now()
  • row:包含具体数据的sql语句,例如会把now()替换成具体时间,优点:执行时sql语句值确定,缺点:占用空间大
  • mixed:mysql自己判断,如果值不会变化,就用statement格式,否则用row格式

undo.log(回滚日志):当发生异常时,从undo.log中将数据恢复成原来的样子,mysql的MVCC依赖隐藏字段,read view和undo.log实现.

三大日志总结?

MySQL InnoDB 引擎使用 redo.log(重做日志) 保证事务的持久性。

使用 undo.log(回滚日志) 来保证事务的原子性。

MySQL数据库的数据备份、主备、主主、主从都离不开bin.log,需要依靠bin.log来同步数据,保证数据一致性。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容