Bootstrap

数据库日志

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

;