Binlog详解

Binlog详解

https://www.bilibili.com/video/BV1tN411Z7iJ?p=3 视频地址

使用场景

① 主从复制 : 在主库中开启BInlog功能,然后主库将Binlog传给从库,从库拿到Binlog后实现数据恢复。

② 数据恢复 :利用mysqlbinlog工具来恢复数据。或者binlog2sql工具

③ 审计 (判断注入攻击)

记录模式

① Row: 日志中会记录每一行数据被修改的情况。

优点: 清楚滴记录每一行数据的修改细节,可靠,可以完全实现主从数据数据同步和恢复

② statement:记录sql语句

优点:日志量小、减少磁盘io,主从还可以减少网络io。 为什么日志量少? 比如一次性插入10行记录,Row类型则需要为每行生成日志,而statement则一条语句即可。

缺点:存在风险。 比如 now()函数、随机数等不能复原

③ mixed:以上两种模式混合

主要用statement类型,在遇到now()、随机数这种无法恢复的就用row类型

建议使用Row类型!!!!!

Binlog文件结构(了解即可)

在这里插入图片描述

BInlog写入机制

  • 根据记录模式和操作触发event事件生成log event (事件触发并行机制)

  • 将事件执行过程中产生log event写入缓冲区,每个事务线程都有一个自己的缓冲区

    log event保存在一个binlog_cache_mng数据结构中,该结构中分为两个缓冲区,一个是stmt_cache(存放不支持事务的);另一个是trx_cache(支持事务的)。 分两个缓冲区是因为,binlog是逻辑日志,既可以支持事务的存储引擎(innodb),也可以支持不支持事务的(myIsam)

  • 事务在提交阶段会将产生的log event写入到外部的binlog文件中。

    注意: 不同事物以串行的方式将log event写入binlog文件中,所以一个事务包含的log event信息在binlog文件中时连续的,中间不会插入其他事务的log

Binlog文件操作

查看相关参数

show variables like “%log_bin%”

查看日志文件

show binary logs 或者 show master logs

在这里插入图片描述

看当前在用哪个日志文件

show master status

在这里插入图片描述

查看日志文件

show binlog events in ‘文件名’

Redolog 和 Binlog的区别

  • redolog 属于Innodb引擎, binlog属于Mysql Server的自带功能,并且是以二进制文件记录
  • redolog是物理日志记录该数据页更新状态内容, binlog是逻辑日志,记录更新过程
  • redolog是循环写,日志空间大小固定。 binlog是追加写入,写完一个写下一个,不会覆盖使用
  • redolog作为服务器异常宕机后事务数据自动恢复使用,binlog可以作为主从复制、数据恢复使用,但是binlog没有自动crash-safe能力
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值