MySQL中有哪些日志类型?

MySQL有binlog、redo log和undo log三种日志,其中binlog 负责主从复制和数据恢复,redo log保证崩溃后数据不丢失,undo log支撑事务回滚和MVCC。

1.binlog

binlog 是server层的日志,记录的是逻辑操作,也就是原始SQL或者行变更前后的值。

它的核心场景是主从同步,从库拉取主库到binlog重放一遍就能保持数据一致。

另外,做数据恢复的时候,也是靠binlog配合全量备份回放到指定时间点。

2.redo log是InnoDB引擎独有的,记录的是物理变更,具体就是"某个数据页的某个偏移量改成了什么值"。

它的作用是崩溃恢复(crash-safe),基于WAL(Write Ahead Log)机制,MySQL挂了重启后,InnoDB会用redo log把没来得及刷盘的脏页恢复出来。

redo log是循环写的,空间固定,写满了就得等checkpoint推进才能继续。

3.undo log也是InnoDB引擎的逻辑日志,记录的是数据修改前的旧值。

事务回滚的时候,就靠undo log把数据改回去,另外MVCC的快照读也依赖它,别的事务要读历史版本,顺着undo log链往前找就行。

相关推荐
Nontee5 分钟前
新手数据库进阶:大白话图解四大隔离级别与底层机制
数据库·oracle
dishugj10 分钟前
【YashanDB 认证】我的崖山数据库初体验:从陌生到上手的成长之路
数据库
前端 贾公子14 分钟前
Claude Code 的 skills 源码解析 (上)
数据库·人工智能
吠品16 分钟前
.NET 8 单文件发布:把 exe 和一堆 dll 打进一个文件里
服务器·数据库·windows
cmes_love28 分钟前
期货五档tick数据下载教程期权五档高频历史数据以及分钟量化回测下载
数据库
蚂蚁数据AntData31 分钟前
从ChatBI到业务记忆:重新定义数据智能的生产力边界
大数据·网络·数据库·人工智能·算法
Quincy_Freak35 分钟前
技术随笔|银河麒麟aarch64内网轻量数据分析工具 SQLiteGo 使用体验
大数据·数据库·数据挖掘·数据分析·sqlite·银河麒麟·aarch64
Amnesia0_035 分钟前
MySQL视图和用户管理
数据库·mysql
matrixmind11 小时前
aiomysql:异步场景下的 MySQL 驱动
android·数据库·mysql·其他
数据库小学妹1 小时前
时序数据怎么存?InfluxDB、TDengine、TimescaleDB与国产融合方案选型实战
大数据·数据库·经验分享·时序数据库·dba