InnoDB uses a novel file flush technique called doublewrite. Before writing pages to a data file, InnoDB first writes them to a contiguous area called the doublewrite buffer. Only after the write and the flush to the doublewrite buffer have completed does InnoDB write the pages to their proper positions in the data file. If the operating system crashes in the middle of a page write, InnoDB can later find a good copy of the page from the doublewrite buffer during recovery.
The doublewrite buffer may also contain compressed pages.
However, the built-in InnoDB in MySQL cannot recognize such pages, and it
assumes that compressed pages in the doublewrite buffer are
corrupted. It also wrongly assumes that the tablespace (the
.ibd
file) consists of 16K byte pages. Thus,
you may find InnoDB warnings in the error log of the form
“a page in the doublewrite buffer is not within space
bounds”.
The doublewrite buffer is not scanned after a clean
shutdown. In an emergency, you may prevent crash
recovery by setting innodb_force_recovery
=6. However, this is
strongly discouraged,
because it may lead into severe corruption. For more
information, see the MySQL manual on
Forcing
InnoDB Recovery.
This is the User’s Guide for InnoDB storage engine 1.1 for MySQL 5.5, generated on 2010-04-13 (revision: 19994) .