数据库日志
MySQL中有哪些日志
1,redo log重做日志
redo log是物理机日志,因为它记录的是对数据页的物理修改,而不是SQL语句。
作用是确保事务的持久性,redo log日志记录事务执行后的状态,用来恢复未写入 data file的已提交事务数据。
2, undo log回滚日志
undo log是逻辑日志,作用是保证事务的原子性,它保存事务修改前的版本。可以用于事务的回滚和多版本控制下的读操作(MVCC)
3, binlog二进制日志
逻辑日志,有如下作用:
用于主从同步:从库消费binlog存储为relay log,保持和主库一致。
数据恢复:误删除状态下的恢复。
审计:可以知道谁在什么时间做了哪些操作,用于审计和合规。
故障诊断:通过binlog文件知道故障期间执行了哪些操作,从而定位故障。
数据迁移:新集群通过消费binlog的方式可以实现2套数据库之间实时同步。
数据备份:binlog可以配合全量备份来实现增量备份,通过全量+增量可以恢复到任意时间点状态。
4, errorlog错误日志
记录服务器的停止、启动、以及运行过程中发生的错误问题。
5,general log全量日志
会记录数据库的所有操作,开销大,默认关闭。当需要定位问题的时候临时打开
6, 慢日志(slow query log)
记录执行时间过长的SQL,默认10s,企业中一般设置为0.1s。对于运行慢的日志需要优化以提升性能。
7,relay log
Slave 的IO线程读取Master的binlog,存储在本地即为relay log,同时SQL现场会去消费relay log从而保障主从数据的一致性。
如果主从延时大会产生大量的relay log