WL#8845: InnoDB: Redo log format version identifier

Status: Complete

InnoDB has several times changed its redo log format by introducing
new redo log record types. Format changes would lead to misleading
reports of redo log corruption when processing an individual redo log record.

In the redo log header (start of the ib_logfile0 file), we will introduce
a format version identifier and textual representation of the software
version that created the redo log files.

Furthermore, we change the checksum of redo log checkpoint pages, so that
older versions of MySQL will refuse to start up on redo log files that
were created with MySQL 5.7.9 or 5.8 (which include this fix).

We will also remove a number of unused fields from the redo log
header and checkpoint pages (pages 0, 1, and 3).

Some tests will be expanded, because with this fix,
the 5.7.9 must refuse to start up with old (not format-tagged)
redo log files from MySQL 5.6 and earlier, unless those redo logs are clean.

The MySQL 5.8 server will refuse to start up if the redo log was not
created by MySQL 5.7.9 or later. If the redo log from MySQL 5.7.9 is not
clean, MySQL 5.8 will refuse startup. Downgrade from MySQL 5.8 to
MySQL 5.7.9 is refused, unless the user manually removes the ib_logfile*
files (hopefully, after a clean shutdown of MySQL 5.8).

We will also replace the configuration parameter
innodb_log_checksum_algorithm with the Boolean parameter
innodb_log_checksums.
We make CRC-32C the only checksum on the InnoDB redo log pages when
innodb_log_checksums=ON (the default). Checksums on the header page and the
checkpoint pages are never disabled.