MySQL Version Compatibility Reference
This page documents the InnoDB on-disk format differences across MySQL versions that affect inno tool behavior and compatibility checking.
Version Feature Matrix
| Feature | 5.6 | 5.7 | 8.0 | 8.4 | 9.0 |
|---|---|---|---|---|---|
| Default page size | 16K | 16K | 16K | 16K | 16K |
| Non-default page sizes (4K/8K/32K/64K) | - | 5.7.6+ | Yes | Yes | Yes |
| CRC-32C checksums | - | 5.7.7+ | Yes | Yes | Yes |
| Legacy InnoDB checksums | Yes | Yes | Yes | Yes | Yes |
| SDI metadata | - | - | Yes | Yes | Yes |
| Tablespace-level encryption | - | 5.7.11+ | Yes | Yes | Yes |
| ROW_FORMAT=COMPRESSED | Yes | Yes | Yes | Deprecated | Deprecated |
| ROW_FORMAT=REDUNDANT | Yes | Yes | Yes | Yes | Deprecated |
| ROW_FORMAT=DYNAMIC | Yes | Default | Default | Default | Default |
| Instant ADD COLUMN | - | - | 8.0.12+ | Yes | Yes |
| Instant ADD COLUMN v2 | - | - | 8.0.29+ | Yes | Yes |
| Redo log format | Pre-8.0 | Pre-8.0 | Pre-8.0.30 / 8.0.30+ | 8.0.30+ | 8.0.30+ |
Checksum Algorithms by Version
MySQL
| Version Range | Algorithm | Detection |
|---|---|---|
| < 5.7.7 | Legacy InnoDB | ut_fold_ulint_pair byte-by-byte |
| 5.7.7+ | CRC-32C | XOR of two CRC32c ranges |
| All versions | Page 0 | May use either algorithm |
MariaDB
| Version Range | Algorithm | Detection |
|---|---|---|
| < 10.5 | Legacy InnoDB or CRC-32C | Same as MySQL |
| 10.5+ | full_crc32 | Single CRC-32C over entire page; checksum in last 4 bytes |
The full_crc32 format is detected via FSP flags bit 4 and is mutually exclusive with MySQL's checksum format.
Percona XtraDB
Percona XtraDB uses the same checksum algorithms as MySQL. Tablespace files are binary-compatible.
Redo Log Format Changes
| Version | Format | Files |
|---|---|---|
| < 8.0.30 | Legacy | ib_logfile0, ib_logfile1 |
| 8.0.30+ | New | #ib_redo* numbered files |
The inno log subcommand supports both formats. The inno verify --redo flag accepts either format for LSN continuity verification.
SDI (Serialized Dictionary Information)
MySQL 8.0 introduced SDI, embedding the data dictionary directly in each tablespace file. This replaces the .frm files used in MySQL 5.7 and earlier.
SDI enables:
- Schema extraction (
inno schema) - Column type decoding (
inno export) - Index name resolution (
inno health) - Version identification (via
mysqld_version_id) - Compatibility analysis (
inno compat)
Pre-8.0 tablespaces without SDI have limited functionality:
inno schemafalls back to index structure inferenceinno exportoutputs hex-only datainno compatreports SDI absence as an error when targeting 8.0+
Using inno compat for Version Checking
The inno compat subcommand codifies these version rules into automated checks:
# Check single file
inno compat -f table.ibd -t 9.0.0
# Scan entire data directory
inno compat --scan /var/lib/mysql -t 8.4.0
# JSON output for scripting
inno compat --scan /var/lib/mysql -t 9.0.0 --json
See the Upgrade Compatibility guide for detailed usage.