mysql中的日志

目录

前言

binlog

概念:

binlog的使用场景:

主从复制:

数据存储异构:

数据恢复:

redo log

概念:

实现:

说明:

binlog 和 redolog的关系:

redo log与binlog区别

mysql通过binlog和redo log来保证故障恢复:

undo log

概念:


前言

mysql日志主要包括二进制日志、事务日志、慢查询日志、错误日志、查询日志等几大类。

逻辑日志:逻辑日志可以简单理解为执行变更的sql语句。

物理日志:因为mysql数据最终是保存在数据页中的,物理日志记录的就是数据页的变更。

binlog

概念:

  • binlogmysql的逻辑日志,用于记录数据库执行的写入性操作信息(不包括查询),以二进制的形式保存在磁盘中。
  • binlog由mysql的服务层负责记录,故无论存储引擎是哪种类型,mysql都会记录binlog。

binlog的使用场景:

主从复制

Master端开启binlog,然后将binlog发送到各个Slave端,Slave端重放binlog从而达到主从数据一致。

数据存储异构:

通过binlog将数据同步到其它的存储系统(eg:Redis、ES)中。

数据恢复

通过使用mysqlbinlog工具来恢复数据。

redo log

概念:

  • mysql事务的持久性就是通过undo log来实现的。
  • redo log会把事务中要修改的信息都记录下来,mysql重启时会去根据redo log来进行数据恢复操作(如果存在需要恢复的数据)。

实现:

  • redo log包括两部分:内存中的日志缓冲(redo log buffer) 和 磁盘上的日志文件(redo log file)。
  • mysql每执行一条DML语句,先将记录写入redo log buffer,后续某个时间点再一次性将多个操作记录写到redo log file
  • 这种先写日志,再写磁盘的技术就是MySQL里经常说到的WAL(Write-Ahead Logging) 技术。

说明:

  • redo log是innodb引擎特有的。

binlog 和 redolog的关系:

redo log与binlog区别

redo logbinlog
文件大小redo log的大小是固定的。binlog可通过配置参数max_binlog_size设置每个binlog文件的大小。
实现方式redo logInnoDB引擎层实现的,并不是所有引擎都有。binlogServer层实现的,所有引擎都可以使用 binlog日志
记录方式redo log 采用循环写的方式记录,当写到结尾时,会回到开头循环写日志。binlog 通过追加的方式记录,当文件大小大于给定值后,后续的日志会记录到新的文件上
适用场景redo log适用于崩溃恢复(crash-safe)binlog适用于主从复制和数据恢复

mysql通过binlog和redo log来保证故障恢复:

  • binlog日志只用于归档,只依靠binlog是没有crash-safe能力的。
  • redo log是innodb引擎特有的,且redolog 落盘后会被覆盖掉。

undo log

概念:

  • mysql事务的原子性就是通过undo log来实现的。
  • 在innodb引擎中,undo Log用来记录每次修改之前的历史值,目的是实现事务的回滚功能,另外innodb中的mvcc也是借助undo log来实现的。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值