MYSQL日志

MySQL 日志体系非常完善,分为多种类型,用于不同场景:故障恢复、性能优化、审计追踪等。

Error Log:错误日志。记录启动,运行,关闭过程中的问题。
General Log:通用查询日志,记录所有SQL查询。
Slow Query Log:慢查询日志,记录执行时间超过阈值的语句。
Bin log:二进制日志,记录所有数据修改的语句。
Redo Log:重做日志,确保事务的持久性。
Undo Log:撤销日志,确保事务的回滚和多版本并发控制。
Relay Log:中继日志,用于主从服务器架构,存放主服务器的日志内容。

binlog

记录了所有DDL(创建库,表),DML(增删改)语句。
主要用于灾难恢复和主从复制(从数据库读取主数据库的binlog同步到子的Relay Log,再同步数据库)。

undolog

undolog是InnoDB存储引擎生成的日志,用于保证原子性,主要用于实现事物的回滚和MVCC。
undolog主要分为两种:
1.insert undo log:在insert时产生的日志只在回滚时需要,所以在事务提交后日志就会被删除。
2.update undo log:update,delete时,产生的日志不只在回滚时需要,在快照读(MVCC)时也需要,所以事务提交后日志也不能删除,提交后会放入undolog的链表中。
隐藏字段:
1.DB_TRX_ID:最近修改事务ID记录插入这条记录或最近修改该记录的事务ID。
2.DB_ROLL_PTR:回滚指针,指向这条记录的上一个版本。
3.DB_ROLL_ID:若当前表无主键,则该隐藏字段作为主键。

redolog

redolog时InnoDB生成的日志,实现了事务的持久性,主要用于故障恢复。
当数据修改时,修改内容会首先写入redolog,再慢慢刷回磁盘。
保证数据的持久性:redo log会在事务提交时将日志存储到磁盘redo log file,保证日志的持久性;同时mysql会将数据写入磁盘,保证数据的持久性
posted @ 2026-02-05 15:58  acccccccccc  阅读(0)  评论(0)    收藏  举报