In WL#6045 we improved the innochecksum tool so that it opens the tablespace file and validates the checksum for each page. It compares the calculated checksum to the stored checksum in the page and reports mismatches, if any. It can also now rewrite page checksums in the tablespace. It is an offline tool, however, so make sure that the MySQL server is not using the tablespace files when running the innochecksum tool.
When InnoDB encounters a page checksum mismatch, it will cause an ASSERT and perform a forced shutdown. So rather than wait for InnoDB to encounter this in production, it is better to use the innochecksum tool to validate and correct any checksum issues ahead of time. You could perform these checks on your MySQL Enterprise Backup files after a backup job completes, as an example.
Again, the innochecksum tool cannot be used on tablespace files that the server already has open. When the MySQL server is running, you can instead use the CHECK TABLE command.
Additional new features introduced in MySQL 5.7 for this tool include:
- Support for file sizes greater than 2GB.
- You can specify the number of checksum mismatches allowed before terminating the program, using the new
- You can specify the checksum algorithm to use with the new
- You can tell the tool to rewrite checksums in the tablespace file when mismatches are detected, using the new
- You can log the output, including the calculated checksum values for each page, using the new
- You can list out page type summaries, using the new
- You can print the details for each page to standard output (STDOUT) or standard error (STDERR), using the new
- You can read data from standard input (STDIN), using the new
- innochecksum can now operate on multiple user-defined tablespace files.
- innochecksum can now operate on multiple system tablespace files.
This post provided a brief introduction to the new features recently introduced in the innochecksum tool. For more information on the tool, please see the manual here.