6.3 Working Around Corruption Problems

Sometimes the operating system or the hardware can corrupt a data file page, in a location that does not cause a database error, but prevents mysqlbackup from completing:

mysqlbackup: Re-reading page at offset 0 3185082368 in /sqldata/mts/ibdata15
bbackup: Re-reading page at offset 0 3185082368 in /sqldata/mts/ibdata15
bbackup: Error: page at offset 0 3185082368 in /sqldata/mts/ibdata15 seems corrupt!

Scrambled data in memory can produce this error, even though the data on disk is correct. Reboot the database server and storage device to see if the problem persists.

If the data really is corrupt on disk, you can restore from an earlier backup and roll forward the recent changes to bring the database back to its current state.

To make an additional backup before investigating the cause of the corruption, you can compile and run a troubleshooting utility, innodb_page_checksum_reset.c, to reset the LSN and checksum fields in one data page, so that mysqlbackup can complete the backup.

Download innodb_page_checksum_reset.c.

The sample program resets page 22357 in a datafile ibdata1. Edit these values according to the values in your error message.

To compile on Linux:

$ gcc -o ibreset innodb_page_checksum_reset.c

If your data file is larger than 2 GB, compile with large file support:

$ gcc -D_XOPEN_SOURCE=600 D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -o ibreset \
innodb_page_checksum_reset.c

The command produces an executable file called ibreset.

IMPORTANT: Do not treat corruption problems as a minor annoyance. Find out what is wrong with the OS or the hardware that causes corrupt pages to appear. (Such troubleshooting is beyond the scope of this manual.)