MySQL之Binlog

参考资料:

参考视频https://www.bilibili.com/video/BV1tN411Z7iJ?p=2&spm_id_from=pageDriver

参考视频 icon-default.png?t=M5H6https://www.bilibili.com/video/BV1r54y1Z7G5?spm_id_from=333.337.search-card.all.click&vd_source=97411b9a8288d7869f5363f72b0d7613


Binlog简述:

  • Binlog是MySQL自带的,独立于InnoDB等引擎的,用于记录所有数据库和表的创建、修改、删除操作的(当然select,show除外),以”事件“形式保存的二进制日志
  • 开启Binlog主要用于:主从复制以及数据库的恢复
  • 主从复制:在主库中开启Binlog功能,这样主库就可以把Binlog传递给从库,从库拿到
    Binlog后实现数据恢复达到主从数据一致性。
  • 数据恢复:redo log只能用于恢复脏页的数据,即缓存中改变但是未持久化到磁盘的数据,但是当我们把磁盘上的表或库,删掉或者破坏掉,redo log是无法恢复的,Binlog则可以将数据库恢复到指定时间点的样子
  • “事件”形式:MySQL把对库或表的创建、修改和删除操作,视为一个事件操作,保存在log_event结构中,最后追加在Binlog中,具体的流程如下:

  • Binlog的生成流程大概如下:
  • (1)、 事务开始、MySQL发生了库或表的创建、修改、删除操作,并在内存中将事件存储为log event结构,将log event写入缓冲区,每个事务线程都有一个缓冲区
  • (2)、事务在提交阶段会将内存中产生的log event写入到磁盘binlog文件中,不同事务以串行方式将log event写入binlog文件中,所以一个事务包含的log event信息在 binlog文件中是连续的,中间不会插入其他事务的log event。
  • (3)、上述介绍的是大多数binlog的刷盘机制,我们可以通过sync_binlog来进行binlog的刷盘策略
  • sync_binlog = 0:不去强制要求,由系统自行判断何时写入磁盘
  • sync_binlog =1:每次commit的时候都要将binlog写入磁盘
  • sync_binlog = N: 每N个事务,才会将binlog写入磁盘


 Binlog简介

  • Binlog属于逻辑日志
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PH = 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值