当前位置: 首页 > news >正文

Java高频面试:在Mysql数据库中 bin log 和 redo log 有什么区别?为什么?

面试官: 能详细解释一下MySQL中binlog和redo log的主要区别吗?它们在数据库运行中各自扮演什么角色?

面试者:binlog的话主要是做主从同步,redolog是为了数据不会丢失。宕机的时候能找到丢失的数据。

面试官:他们底层有个2阶段提交来保证2个日志的原子性,你能给我讲下为什么么?

面试者:呃。。。

面试官: 首先,它们俩的定位和用途完全不同

  • binlog,是MySQL Server层的归档日志和复制日志。它记录的是逻辑操作,比如“在用户表插入了一条ID=1的数据”。不管底层用的是InnoDB还是其他存储引擎,只要是数据库的变更,它都记录。所以它的核心任务是:数据归档、按时间点恢复,以及最重要的——主从复制。可以说,它是为了数据流转和备份而生的。
  • redo log,是InnoDB存储引擎层的重做日志。它记录的是物理修改,描述的是“在表空间A的第100号数据页,偏移量200的位置,把数据从‘ABC’改成了‘XYZ’”。它的核心任务就一个:确保事务的持久性,实现崩溃恢复。当数据库异常重启,InnoDB就靠它来把数据恢复到崩溃前的状态。它是为了保证数据本身不丢而设计的。

一个管“复制和归档”,一个管“崩溃恢复”,看起来各司其职,对吧?但MySQL为了保证主从数据的绝对一致性,必须让它们俩协同工作,这就引出了最关键的问题:原子性

为什么必须保证这两个日志的原子性呢?我们来看两个致命的“如果”:

第一种情况:假设一个事务提交时,binlog写成功了,但redo log没写成功,接着数据库宕机了。

  • 从库那边:因为它拿到了完整的binlog,所以同步到了这个事务的变更
  • 主库这边:重启后,因为redo log不完整,无法恢复这个事务,数据就丢了
  • 结果:主库的数据落后于从库,主从不一致

第二种情况:反过来,redo log写成功了,但binlog写失败了

  • 主库这边:重启后,能根据redo log成功恢复数据。
  • 从库那边:因为没收到这个事务的binlog,完全不知道发生了什么
  • 结果:主库的数据领先于从库,还是主从不一致

所以,MySQL的解决方案是引入了一个经典的两阶段提交(2PC)协议。简单来说,就是把一个事务的提交拆成“准备”和“提交”两步,让binlog和redo log在这两个阶段“对表”,确保它们在任何时候都处在一致的状态。

http://www.jsqmd.com/news/617025/

相关文章:

  • PHP 8.4+原生协程I/O配置实战(从php.ini到ext/uv深度调优):2024年唯一经百万QPS验证的生产级配置模板
  • IQuest-Coder-V1-40B保姆级教程:单卡A100完成LoRA微调与部署
  • FireRedASR-AED-L模型解析:其内部的卷积神经网络与LSTM结构
  • Claude Code自由!全球免费大模型一键接入,稳定又便宜
  • G-Helper:三步掌握华硕笔记本的极致性能控制方案
  • 达摩院春联AI实战落地:中小企业春节营销内容智能生产方案
  • 解决 Windows 下 “被应用程序控制策略阻止” 的错误 4步解决!亲测有效✅
  • 2026中科番茄红素含量多少效果好吗解析 - 品牌排行榜
  • 2026论文降AIGC平台哪家口碑好 - 品牌排行榜
  • 千问3.5-2B网页版使用教程:拖拽上传+历史记录保存+结果复制一键导出
  • 2026护发精油哪个牌子好?5款口碑产品深度测评 - 品牌排行榜
  • Java开发环境快速搭建:Phi-4-mini-reasoning辅助JDK安装与配置
  • 仅限首批23家制造企业内部流通的PHP网关诊断工具包(含Wireshark深度解码插件+PLC异常帧自动归因引擎)
  • intv_ai_mk11入门必看:为什么选择中等规模Llama模型而非更大参数版本
  • BetterGI:如何用智能自动化解放你的原神游戏时间?
  • ubuntu 顶部监控
  • RePKG:Wallpaper Engine资源提取与转换的终极解决方案
  • Nanbeige 4.1-3B模型API接口设计与RESTful最佳实践
  • 论文降AIGC的网站哪家专业?2026年实用选择参考 - 品牌排行榜
  • Git-RSCLIP遥感图像分类效果展示:复杂混合场景(城乡交界带)识别能力
  • GitHub汉化插件终极指南:3分钟告别英文困扰,畅游中文GitHub世界
  • 科研告急?遥感+GIS光伏评估,高分稳了![特殊字符]
  • GraalVM Native Image内存暴涨?5个被官方文档隐瞒的JVM参数配置真相
  • C++的std--stacktrace_entry调用栈条目与符号化信息在错误报告中的使用
  • PMP刷题必备口诀-5(题库+答案详细解析)
  • FreeMove:Windows目录迁移终极解决方案,98%成功率释放C盘空间
  • LabVIEW 环境下TSP与SCPI 指令对比分析
  • WE Learn助手终极指南:三分钟解锁智能学习新体验
  • 2026年推荐一款产后能用的防脱精华液 - 品牌排行榜
  • PMP刷题必备口诀-6(题库+答案详细解析)