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链往前找就行。

相关推荐
企业数字化笔记19 分钟前
多租户配额怎么控制?用量口径、并发预留与超额处理的实现方法
java·数据库·spring boot
roman_日积跬步-终至千里33 分钟前
【数据Agent论文·查询与语义|06】RAT-SQL:怎样把问题、表和字段真正关联起来?
数据库·sql·数据分析
盟接之桥43 分钟前
盟接之桥谈线束数字化-按单入按单出:线束企业库存管理的破局之道
大数据·前端·网络·数据库·人工智能·制造
我不会起名字3221 小时前
MySQL 深分页 LIMIT 1000000 卡死:3 种改写与 4 组实测对比
mysql·性能优化·索引·分页·limit
Nturmoils1 小时前
数据集成软件 KFS:多套业务库汇聚时,先把来源和口径理清
数据库
麦壳饼1 小时前
SonnetDB:批量写入的大小、背压与刷新策略
数据库·sonnetdb
weixin_460443562 小时前
Java+Linux私有化训考平台:服务、数据库与终端部署结构解析
java·linux·数据库·私有化部署·企业培训考试系统·企业考试系统
编程火箭车2 小时前
MySQL 拥抱 AI:向量、RAG、AutoML 全进了数据库
数据库·mysql·ai编程·向量数据库·rag·automl·mysql9
o_oer3 小时前
mysql type
mysql
花卷持续成长3 小时前
慢SQL的整体优化思路
后端·mysql