安全基础3 ---MySQL

本文探讨了MySQL中redo log和bin log的重要性和区别。redo log用于保证事务一致性和持久性,提供crash-safe能力,而bin log记录数据更新用于主从复制。文章通过四个作业详细阐述了两者的功能、备份机制及其在数据库恢复中的角色。
摘要由CSDN通过智能技术生成

作业1:如果只用redo log或只用bin log可以行吗?

当然不可行。

假设1:如果只有binlog,那么MySQL的执行逻辑将变成:数据更新到内存---写binlog---提交事务.          这种情况下,如果写完binlog之后MySQL发生了crash,那么内存中的数据页是无法修复的,由于MySQL采用的是WAL技术,也就是先写内存日志再写磁盘,而binlog是没有能力恢复损坏的内存数据页的。

假设2:如果只有redo log,那么因为redo log是循环写的,也就没有办法保留很长的周期,失去了binlog归档变更操作的功能。再者主从复制的结构可能会更脆弱,高可用架构也就更不行了。  

redo log 作用:保证事务的一致性和持久性写缓存、快速提交,崩溃恢复前滚。

bin log 作用:二进制日志文件,用于记录mysql的数据更新或者潜在更新(比如DELETE语句执行删除而实际并没有符合条件的数据),在mysql主从复制中就是依靠的binlog。

redo log 和 bin log 的区别:

  • redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现的,所有引擎都可以使用。

  • redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是逻辑日志,记录的是这个语句的原始逻辑,比如“给ID=2这一行的c字段加1 ”。

  • redo log是循环写的,空间固定会用完;binlog是可以追加写入的。“追加写”是指binlog文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。

作业2:redo log的crash-safe、writepos 、checkpoint 介绍,为什么redo log具有crash-safe的能力,是binlog 无法替代的?

crash safe 定义

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值