Welcome everyone

Mysql日志体系

mysql 汪明鑫 576浏览 0评论

redo log

innodb引擎专有的重做日志

事务持久化,这也是为啥说myisam不支持事务,innodb支持事务

redo log是先落日志再写磁盘,类似基于内存整个小本本,每次事务来了,记个账,选择合适的时机再刷到磁盘里

 

redo log分为两个阶段: prepare + commit

即两阶段提交

undo log

回滚日志

保证数据的原子性,保存了事务发生之前的数据的一个版本,可以用于回滚

当事务提交之后,undo log并不能立马被删除,而是放入待清理的链表,最后决定是否可以清理undo log的日志空间

每次的事务变更都指向了数据历史版本,可回溯,可回滚

一个查询事务,会为其分配一个全局事务id, 更具事务id大小,可确定当前查询可以看到的视图,并生成快照

 

undo log 是MVCC 多版本并发控制的基础。

 

binlog

mysql 层面的日志

主从同步也会用这个

 

需要注意的是事务操作,先发binlog 再commit数据

所以可能会出现,业务消费到binlog,查db还查不到。。。

 

我们一般可以消费binlog,发kafka消息,再转异步处理相关业务逻辑

也可以消费双方表的binlog,做双方对账

 

error log

错误日志记录着mysqld启动和停止,以及服务器在运行过程中发生的错误的相关信息。

 

slow query log

慢日志记录执行时间过长和没有使用索引的查询语句,包括select、update、delete以及insert语句,慢日志只会记录执行成功的语句。

可以配置针对所有查询打开

 

general log

记录了服务器接收到的每一个查询或是命令。

 

relay log

用于从服务器和主服务器的数据保持一致。

 

 

转载请注明:汪明鑫的个人博客 » Mysql日志体系

喜欢 (0)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz