IT袋

当前位置:主页 > 经验教程 > 建站编程 >

InnoDB持久化策略以及过程详解

InnoDB持久化策略以及过程详解(2)

时间:2023-09-23 22:59:21 来源:IT袋 作者:苏晓敏
导读:InnoDB持久化策略以及过程详解,partial page write 。 mysql在恢复的过程中是检查页的 checksum (页的校验和,见上文),发生partial page write问题时, Page已经损坏,找不到该页的checksum,就无法

InnoDB持久化策略以及过程详解

partial page write

mysql在恢复的过程中是检查页的checksum(页的校验和,见上文),发生partial page write问题时, Page已经损坏,找不到该页的checksum,就无法通过redolog恢复。

因此根据上述问题,InnoDB将buffer pool中的脏页刷盘时,会先通过memcpy函数将Page刷到double write buffer,再将数据拷贝到数据文件对应的位置。

double write buffer是物理磁盘上共享表空间中连续的128个页(每页16KB,大小共2MB, 每次写入1MB)。

  • 如果写double write buffer失败,那么这些数据不会刷盘,InnoDB会载入磁盘原始数据和redo日志比较,并重新刷到double write buffer,然后再刷盘。
  • 如果写double write buffer成功,但是刷盘失败(partial page write问题),那么InnoDB就不会通过事务日志来恢复了,而是直接用double write buffer中的数据刷盘。

redolog持久化过程

redolog包括两部分:一是内存中的日志缓冲(log buffer),该部分日志是易失性的;二是磁盘上的重做日志文件(redolog file,以ib_logfile0、ib_logfile1…命名),该部分日志是持久的。

redolog可以通过参数InnoDB_log_files_in_group配置成多个文件(最大100),另外一个参数InnoDB_log_file_size表示每个文件的大小,因此总的redolog大小为InnoDB_log_files_in_group * InnoDB_log_file_size。

上文讲到内存中log buffer是由多个redolog block组成的(日志块头占12B、日志块尾占4B),那么redolog file也是如此,每个redolog file的前4个block用于表示文件头,存储了一些管理信息,往后则存储log buffer中的block镜像。文件头主要存储了标记redolog file开始的LSN值(Log Sequence Number的简称)、标记redolog已刷盘的全局变量flushed_to_disk_lsn值、标记脏页已刷盘的全局变量checkpoint_lsn等。

  • LSN:LSN记录了已经写入的redolog的日志量,是一个全局变量,初始值为8704。每次写入一个mtr时,LSN就会累加上mtr所占的空间字节数和相应的block头尾空间字节数。比如mtr_1产生的redolog为200B,那么LSN就变成了8704+12+200=8916,之后mtr_2又产生了1000B的redolog,那么LSN就变成了8916+296+4+512+12+208=9948。
  • flushed_to_disk_lsn:系统第一次启动时,flushed_to_disk_lsn值和初始的LSN值是相同的,都是8704。随着系统的运行,redolog被不断写入log buffer,但是并不会立即刷盘,LSN的值就和flushed_to_disk_lsn的值拉开了差距,如果两者的值相同时,说明log buffer中的所有redolog都已经刷盘了。
  • checkpoint_lsn:checkpoint_lsn的初始值也是8704,当flush链表中的脏页按顺序被刷盘时,mtr生成的对应redolog就可以被覆盖了,所以我们可以进行一个增加checkpoint_lsn的操作,我们把这个过程称之为做一次checkpoint。脏页是与redolog有关联的,记录了redolog的LSN信息,通过脏页可以找到对应的redolog,通过redolog也可以恢复对应的脏页。

相关阅读

  • OSPF中LSA主要的5种类型详解 OSPF的LSA类型有哪些

    OSPF中LSA主要的5种类型详解 OSPF的LSA类型有哪些

    相对于大多数人OSPF中LSA主要的5种类型详解的IT小经验,接下来IT袋网小编就来介绍。 一台路由器中所有有效的LSA通告都被存放在它的链路状态数据库中,正确的LSA通告可以描述一个OSPF区域的网

  • lol无法连接服务器是什么原因 lol无限闪退重新连接的方法

    lol无法连接服务器是什么原因 lol无限闪退重新连接的方法

    小编为大家解答lol无法连接服务器是什么原因和lol无限闪退重新连接的方法的IT小经验,下面为详细的介绍。 用户运行lol游戏的时候会提示无法连接服务器的情况,今天为大家带来lol无法连接

  • html网页设计模板网站有哪些 html5网页前端设计步骤

    html网页设计模板网站有哪些 html5网页前端设计步骤

    本文核心内容:html网页设计模板网站有哪些和html5网页前端设计步骤方面的讲解,接下来IT袋带大家一起了解。 小型集合Mashup模板提供HTML/CSS、Sketch和NPM等免费模板。这个设计非常现代,绝对值

  • redis常见字符乱码问题及解决办法

    redis常见字符乱码问题及解决办法

    小编为大家说一说redis常见字符乱码问题及解决办法的教程内容,接下来分享详细内容。 redis常见字符乱码问题及解决办法 问题 redis保存数据后出现\xac\xed\x00\x05t\x00 解决办法 创建一个配置类