MySQL日志

MySQL都有哪些日志

MySQL日志主要包括七种:

1.重做日志(redo log)
2.回滚日志(undo log)
3.归档日志(bin log)
4.错误日志(error log)
5.慢查询日志(slow query log)
6.一般查询日志(general log)
7.中继日志(relay log)
其中比较重要的是bin log归档日志,redo log重做日志和undo log回滚日志

tips:逻辑层面一般认为是SQL语句,物理层面就是数据页本身的变更

bin log归档日志

是MySQL服务器(Server)层的日志,记录的是逻辑层面的SQL语句

主要用于数据恢复主从复制

1.数据恢复

如果数据库数据被删除了,binlog文件保存的是全量的日志,也就是保存了所有数据变更的情况,理论上只要记录在binlog上的数据,使用恢复工具都可以恢复

2.主从复制

在Master端开启binlog,然后将binlog 发送到各个Slave端,Slave端(将主节点的数据线写到relaylog,从节点开启新线程读取relaylog数据来更新)重放 binlog 从而达到主从数据一致。

redo log重做日志

是InnoDB引擎独有的,记录的是物理层面的业务修改

用来实现宕机恢复和事务的持久性

1.当MySQL挂机或宕机了,内存中的数据还没有完全刷新到磁盘上,redo log记录了数据的修改操作,可以在数据库重启时InnoDB可以通过redo log恢复未写入磁盘的修改,确保数据一致性。

2.当事务提交时,redo log将日志存储到磁盘redo log file,确保事物的修改已持久化到磁盘,即使系统崩溃,提交的事务也不会丢失

工作机制:使用的是WAL技术(Write-Ahead Logging)

核心思想是先写日志,在写数据

1)当一个事务开始时,所有对数据库的修改都会先记录到一个日志文件中,而不是直接应用到数据库文件,这些日志记录了数据的变更信息,可以用于恢复数据。
2)当日志记录被安全地写入磁盘后,才会将这些修改应用到数据库文件中。

InnoDB重做日志的工作机制如下:
1)当一个事务开始时,所有对数据库的修改首先记录到重做日志缓冲区(redolog Buffer)中。
2)重做日志缓冲区的数据会周期性地刷新到磁盘上的重做日志文件(ib_logfile0和ib_logfile1)。
3)当事务提交时,InnoDB确保重做日志已写入磁盘,然后将数据页的修改写入数据文件。
4)如果系统崩溃,InnoDB 会在启动时通过重做日志重新应用所有未完成的事务,以恢复数据库到一致状态。

undo log回滚日志

是InnoDB引擎独有的,记录的也是逻辑层面的SQL语句

undo log主要是实现InnoDB的事务的原子性(事务的回滚)实现多版本并发控制MVCC

1.原子性
在事务中使用的每一条 INSERT 都对应了一条 DELETE,每一条 UPDATE 也都对应一条相反的 UPDATE 语句,当事务回滚时,可以利用undo log来进行回滚。

2.实现MVCC

生成undo log版本链,实现回滚到上一个版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值