Mysql 日志
Error log
错误日志,note warning error
General Query Log
普通、一般、通用查询日志
Slow Query Log
慢查询日志
DDL log (metadata log)
没有可配置选项
更新日志
已被 binlog 取代
Relay log
中继日志,从库接收主库复制时产生的日志信息,与二进制日志几乎相同
Binary log
- 用于复制,用于恢复,用于审计等
- 记录 DDL DML 语句
事务日志 redo
- 记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)
- 物理日志(幂等,因为只会加),基于 Page
- 写入形式:T0-1,T0-2,T1-1,T0-3,T1-2
- 单位:日志块(log block)
- 日志块:12kb日志块头、8kb日志块尾和日志主体
- redo log group:由日志块组成,默认一个组 2 个ib_logfile0 ib_logfile1
- 每个 ib_logfile 都会用开头2kb,但只有第一个 ib_logfile 会存储数据
- 第一个 ib_logfile 满了,写入第二个,第二个满了,清空第一个,写入第一个
- redo log 会被删除
事务日志 undo
- 逻辑日志,基于行数据
- 记录相反方向但 sql
- 基本单位:段undo log segment
- 回滚段:rollback segment,默认128个,每个1024个undo log segment
- undo log也会产生redo log,因为undo log也要实现持久性保护
- 存储在ibdata1中
- commit 提交的时候不会立即删除 undo log
- undo log 会被删除
- 提供回滚和多个行版本控制(MVCC)
其它有趣等知识
- 先写 binlog,再写 undo log redo log
- 在启动innodb的时候,不管上次是正常关闭还是异常关闭,总是会进行恢复操作。
- ibdata1是MySQL使用InnoDB引擎时所产生的文件,其一般存储数据、索引、结构、缓冲数据、共享数据和重做日志等