mysql里面常说的WAL技术,即Write-Ahead Logging => 先写日志,再写磁盘。
redo log:属于InnoDB引擎特有的日志
1. 当需要update T set 时, InnoDB 引擎将记录写入redo log,并更新内存;
2. 系统空闲时,系统将该update记录更新进入磁盘;
3. redo log写入分为prepare 和commit 两个阶段; (为了保证redolog binlog的逻辑一致性)
#:redo log是固定大小的,类似于回路使用。
Redo log 保证 为InnoDB提供了crash-safe的能力,保证即使数据库发生异常重启数据也不会丢失。
binlog:(mysql sever 层实现,所有引擎均可使用)
1. 依次取出binlog可以恢复数据库至某一特定时刻
区别:
1. redo log属于InnoDB特有,binlog属于server层,多有引擎均可使用;
2. redo log是物理日志,记录 在某个数据页上做了什么修改;
binlog是逻辑日志,记录sql语句的原始逻辑,如给ID=2的字段加1;
3. redo log是循环写的,空间固定,用完从头开始;
binlog是追加写入的,不会覆盖以前的日志;