IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:Redo Log

共 4 篇相关文章

IT 累计浏览 2,783

InnoDB Log 漫游(3)

这篇讲的是InnoDB日志系统的深度漫游,作者从redo log的写入、刷新到checkpoint机制,带我们走进数据库“心脏”的搏动过程。它剖析了LSN如何贯穿日志管理,揭示了`innodb_flush_log_at_trx_commit`不同参数背后,性能与持久性的权衡逻辑。文章还深入到代码层面,拆解了checkpoint如何保证数据安全又不至于阻塞系统,以及组提交如何通过合并刷盘来显著提升吞吐量。理解这些机制,能帮你在面对写入性能瓶颈或主从延迟问题时,更精准地调优参数,洞察数据库“坚如磐石”背后的精密设计。

IT 累计浏览 2,351

InnoDB Log 漫游(2)

这篇文章深入探讨了 InnoDB 日志体系中的核心内容——“日志本身”。作者聚焦于 redo log 与 undo log 这两类关键日志,详细拆解了它们各自记录的内容、结构以及在不同事务场景下的协作方式。 文章清晰地对比了二者的根本差异:redo log 记录的是页面物理修改的“结果”,用于保证事务的持久性;而 undo log 记录的是逻辑操作的“逆过程”,用于支持事务回滚和 MVCC 实现。这种对比不仅停留在概念层面,还结合了事务提交、崩溃恢复等具体流程,阐释了为什么必须同时需要这两类日志。 文中对日志块结构、LSN 推进、checkpoint 机制的剖析尤为细致,揭示了 InnoDB 如何通过精密的日志设计来平衡写入性能与数据安全性。对于想要理解 MySQL 底层存储引擎如何实现 ACID 特性的开发者而言,这篇分析提供了扎实的原理依据。

IT 累计浏览 3,060

当logfile被误删除后

当一个只有单个logfile member的logfile group,在logfile变为current时被发现已被误删除,问题就变得相当棘手了。这篇处理记录详细复现了这一数据库紧急状况。 根因其实有两重:直接的起因是DBA的误操作(rm),但更深层的风险源在于,每个logfile group仅配置了一个logfile member,这使得 logfile 没有任何冗余和容错空间,一旦被破坏即意味着可能的数据丢失。当发现current logfile缺失时,数据库实例会因为无法归档或写入新日志而宕机。 文章梳理了从发现问题后的紧急处理流程:首先必须立刻停止数据库操作以防止日志序列被覆盖,接着评估通过操作系统文件恢复工具或 RMAN 备份找回日志文件的可能性。最终,恢复过程严重依赖于是否有可用的、完整的RMAN备份。 这次“踩坑”不仅是一次紧急恢复操作,更是一次深刻的架构教训。它强烈提示,生产数据库的日志文件绝不能只有单一副本,必须配置多个logfile member,并将它们放置在不同的物理磁盘组上。此外,建立严格的运维操作规范,避免直接执行高危命令,才是从根源上杜绝此类问题的方法。

IT 累计浏览 4,607

InnoDB之Dirty Page、Redo log

这篇讲的是InnoDB引擎里一个很经典的数据持久化问题。当我们要往数据库里写数据时,系统并不会每次都直接改磁盘,而是先在内存(Buffer Pool)里把对应的“页”修改了。这个被修改过的、和磁盘上还不一致的内存页,就是“脏页”(Dirty Page)。这么做性能很高,但电脑一断电,内存里的修改就全丢了。 那InnoDB是怎么保证数据不丢的呢?这就轮到它的“重做日志”(Redo Log)登场了。在修改内存里的数据页之前,InnoDB会先把这个修改动作本身,按顺序记到Redo Log文件里。Redo Log是顺序写入磁盘的,速度很快。 所以整个流程是:事务提交时,只要确保对应的Redo Log已经写入磁盘,就算内存里的脏页还没来得及刷盘,系统重启后也能根据Redo Log的记录,把那些“脏”修改重新应用一遍,把数据恢复过来。这种“Write-Ahead Logging”(先写日志)的设计,巧妙地结合了内存操作的高性能和日志写入的可靠性,让InnoDB既跑得快,又丢不了数据。