从一条sql语句执行过程联想到的redo和binlog

1 引言

mysql 日志可分为一下集中

  1. 错误日志(error log):对mysql的启动、运行、关闭过程中产生的错误、警告或者甚至正确信息
  2. 二进制文件(binlog):记录所有对mysql的写操作语句,有statements和row模式
  3. 慢查询日志 (slow query log):记录运行时间超过指定或者默认时间的sql
  4. 查询日志(log):记录所有对mysql的数据库请求信息
  5. 重做日记(redo log):用来实现事务的持久性
  6. undo log:用来实现事务的回滚

本篇文章主要介绍事务的提交过程中用到的redo log和binlog

2 sql 语句的执行过程

一个sql的全过程如下:
在这里插入图片描述

3 redo log和binlog 写入流程图

在这里插入图片描述
(1)(3) 称为事务的两阶段提交
整个流程称之为WAL技术,即write ahead logging技术

3.1 redo log

redo 记录的是物理级别的修改,也就是对应的数据页修改
redo 可分为四段,两个指针,其中一个write pos 写指针,另外一个check point 指针。
在这里插入图片描述

  • write pos 指针负责写数据到check point 和write pos之间的空间。
  • check point 负责把数据写入存储引擎中,并擦除write pos 和check point中间的数据

3.2 binlog

binlog 记录的是数据库的逻辑级别的修改
可对应两种形式:

  • statement 记录sql形式
  • row 记录两条记录,一条是数据修改前的样子,一条是数据修改后的样子

综上 redo log+ binlog 做数据的恢复
binlog 做数据备份

4 数据恢复

在这里插入图片描述
综上redo log和binlog 保证数据库crash-safe。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值