mysql双精 mysql双写原理_表空间

 

redo log 能修复 部分写失效(partial page write) 这种情况吗?

不能!

mysql双精 mysql双写原理_文件写入_02

 

 doublewrite架构图

mysql双精 mysql双写原理_表空间_03

 

脏页刷新时的doublewrite步骤

脏页flush到磁盘文件时:

1、先通过memcpy方法将该脏页复制到 doublewrite buffer中。

2、将doublewrite buffer中的数据分两次(一次1M)顺序的写入共享表空间的doublewrite中.

3、上面操作只是写入oscache,为了可靠性,马上调用fsync将数据flush到磁盘(doublewrite的文件写入是顺序写,所以效率高)。

4、完成doublewrite文件写入后,接下来将doublewrite buffer中的数据对应到各个表空间文件进行写入操作(离散写)。

 

doublewrite 压力判断

mysql双精 mysql双写原理_数据_04

 

mysql双精 mysql双写原理_表空间_05