Upgrade Compatibility Checking
The inno compat subcommand analyzes InnoDB tablespace files to determine whether they are compatible with a target MySQL version. This is useful when planning MySQL version upgrades, especially across major versions (e.g., 5.7 to 8.0, or 8.0 to 9.0).
Quick Start
Check a single tablespace against MySQL 8.4:
inno compat -f /var/lib/mysql/mydb/users.ibd -t 8.4.0
Scan an entire data directory:
inno compat --scan /var/lib/mysql -t 9.0.0
What Gets Checked
| Check | Description | Severity |
|---|---|---|
| page_size | Non-default page sizes (4K/8K/32K/64K) require MySQL 5.7.6+ | Error |
| sdi | SDI metadata is required for MySQL 8.0+ but absent in pre-8.0 files | Error |
| encryption | Tablespace-level encryption requires MySQL 5.7.11+ | Error |
| vendor | MariaDB tablespaces are incompatible with MySQL (divergent formats) | Error |
| row_format | COMPRESSED is deprecated in MySQL 8.4+, REDUNDANT in 9.0+ | Warning |
| compression | Page compression detected (informational) | Info |
Severity Levels
- Error: The tablespace cannot be used with the target version. Migration or conversion is required.
- Warning: The tablespace will work but uses deprecated features. Plan for future migration.
- Info: Informational finding, no action required.
Single-File Mode
Analyze one tablespace in detail:
inno compat -f table.ibd -t 8.4.0 -v
The -v (verbose) flag shows current and expected values for each check. JSON output is available with --json:
inno compat -f table.ibd -t 8.4.0 --json
Example JSON output:
{
"file": "table.ibd",
"target_version": "8.4.0",
"source_version": "8.0.32",
"compatible": true,
"checks": [
{
"check": "vendor",
"message": "MySQL tablespace detected",
"severity": "info"
}
],
"summary": {
"total_checks": 1,
"errors": 0,
"warnings": 0,
"info": 1
}
}
Directory Scan Mode
Scan all .ibd files under a data directory:
inno compat --scan /var/lib/mysql -t 9.0.0
The scan uses parallel processing for fast analysis of large data directories. Add --depth 0 for unlimited recursion, or --depth 3 to limit traversal depth.
With --json, the output includes per-file results and aggregate counts:
inno compat --scan /var/lib/mysql -t 9.0.0 --json
Common Upgrade Scenarios
MySQL 5.7 to 8.0
Key checks:
- SDI metadata is required (added in 8.0). Pre-8.0 tablespaces will report an SDI error.
- Encryption support is available but the format changed.
MySQL 8.0 to 8.4
Key checks:
ROW_FORMAT=COMPRESSEDis deprecated. Tables using it will get a warning.- All other formats (DYNAMIC, COMPACT) remain fully supported.
MySQL 8.x to 9.0
Key checks:
ROW_FORMAT=REDUNDANTis deprecated in 9.0+.ROW_FORMAT=COMPRESSEDdeprecation continues from 8.4.
MariaDB to MySQL
MariaDB tablespaces are flagged as incompatible with MySQL due to divergent on-disk formats (different checksum algorithms, FSP flags, and page types). Migration requires a logical dump and reload.