【mysql 第四篇章】bin log 的作用是啥呢?

一、redo Log 介绍

redo log 是一种偏向物理性质的重做日志,因为他里面记录类似的这样的东西,“对那个数据也中的什么记录,做了个什么修改”。它是 InnoDB 存储引擎特有的东西。

二、bin Log 日志

bin log 叫做归档日志,它里面记录的是偏于逻辑性的日志, 类似 对 users 表中的 id=10 的一行数据做了更新操作,更新以后的值是什么。它不是 InnoDB 存储引擎特有的日志文件,属于 mysql server 日志文件。

当事务提交的时候,redo log日志会写入磁盘文件中。其实在提交事务的时候,我们同时还会把这次更新对应的binlog日志写入磁盘的文件中。

在这里插入图片描述

三、bin Log 的刷盘策略

通过 sync_binlog 参数可以设置刷盘策略。参数为 0(默认值是 0)当 binlog 写入磁盘的时候,其实不是直接进入磁盘文件,而是进入 os cache 内存缓存。但是如果此时服务器宕机,存在os cache里的binlog日志是会丢失的。参数为 1 强制在提交事务的时候,binlog直接写入磁盘文件中,那么这样提交事务之后,哪怕机器宕机,磁盘上的binlog是不会丢失的。

四、基于 bin Log 和 redo Log 完成事务的提交

在这里插入图片描述

当我们把binlog写入磁盘文件后,接着就会完成最终事务的提交,此时会把本次更新对应的binlog文件名和这次binlog日志在文件里的位置,都写入到redo log文件中,同时在redo log日志文件里写入一个commit标记。在完成这件事情之后,才算最终完成了事务的提交。写入commit标记的意义是保持,redo log 和 binlog 日志保持一致的。

五、脏数据刷回磁盘

在这里插入图片描述

当上面的步骤执行完成之后,最后会有一个线程去随机的把buffer pool的修改后的数据刷回到磁盘中。即使mysql服务宕机也没有关系,因为所有修改后的数据都在redo log中了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值