inno pages

Detailed page structure analysis for InnoDB tablespace files.

Synopsis

inno pages -f <file> [-p <page>] [-v] [-e] [-l] [-t <type>] [--json] [--page-size <size>] [--keyring <path>]

Description

Goes beyond FIL headers to decode the internal structure of each page type. Unlike inno parse, which only reads FIL headers, this command dives into page-type-specific fields:

  • INDEX pages (type 17855): Decodes the index header (index ID, B+Tree level, record counts, heap top, garbage bytes, insert direction), FSEG inode pointers for leaf and non-leaf segments, and infimum/supremum system records.
  • UNDO pages (type 2): Shows the undo page header (type, start/free offsets, used bytes) and segment header (state, last log offset).
  • BLOB/ZBLOB pages (types 10, 11, 12): Shows data length and next-page chain pointer for old-style externally stored columns.
  • LOB_FIRST pages (MySQL 8.0+): Shows version, flags, total data length, and transaction ID for new-style LOB first pages.
  • Page 0 (FSP_HDR): Shows extended FSP header fields including compression algorithm, encryption flags, vendor detection, and first unused segment ID.

In list mode (-l), output is a compact one-line-per-page summary showing page number, type, description, index ID (for INDEX pages), and byte offset. In detail mode (the default), each page gets a full multi-section breakdown.

Flags

FlagShortRequiredDefaultDescription
--file <path>-fYes--Path to the InnoDB data file (.ibd).
--page <number>-pNoAll pagesDisplay a specific page number only.
--verbose-vNoOffShow checksum status, FSEG internals, and additional detail.
--show-empty-eNoOffInclude empty/allocated pages in the output.
--list-lNoOffCompact one-line-per-page listing mode.
--type <filter>-tNoAll typesFilter output to pages matching this type name.
--json--NoOffOutput in JSON format.
--page-size <size>--NoAuto-detectOverride page size.
--keyring <path>--No--Path to MySQL keyring file for decrypting encrypted tablespaces.

Type Filter Values

The -t flag accepts these values (case-insensitive):

FilterMatches
INDEXINDEX pages (B+Tree nodes)
UNDOUndo log pages
BLOBBLOB, ZBLOB, and ZBLOB2 pages
LOBLOB_INDEX, LOB_DATA, and LOB_FIRST pages
SDISDI and SDI_BLOB pages
COMPRESSED or COMPAll compressed page types
ENCRYPTED or ENCAll encrypted page types
INSTANTINSTANT pages

Any other string is matched as a substring against the page type name.

Examples

List all pages in compact mode

inno pages -f actor.ibd -l

Deep-dive into a single INDEX page

inno pages -f actor.ibd -p 3 -v

Show only INDEX pages

inno pages -f actor.ibd -t INDEX

Show only UNDO pages in list mode

inno pages -f actor.ibd -t UNDO -l

JSON output for INDEX pages

inno pages -f actor.ibd -t INDEX --json | jq '.[].index_header'

Output

Detail Mode (default)

For each page, displays sections based on page type:

FIL Header (all pages): Page number, byte offset, page type, prev/next pointers, LSN, space ID, checksum.

INDEX Header (INDEX pages): Index ID, node level, max transaction ID, directory slots, heap top, record counts, free list start, garbage bytes, last insert position and direction.

FSEG Header (INDEX pages): Inode space ID, page number, and offset for leaf and non-leaf segments.

System Records (INDEX pages): Record status, owned records, deleted flag, heap number, infimum/supremum next-record offsets.

BLOB Header (BLOB/ZBLOB pages): Data length and next page number in the chain.

LOB First Page Header (LOB_FIRST pages): Version, flags, total data length, transaction ID.

UNDO Header (UNDO pages): Undo type, start offset, free offset, used bytes, segment state, last log offset.

FSP Header (page 0): Vendor, space ID, size, flags, free-page limit, compression algorithm, encryption info, first unused segment ID.

FIL Trailer (all pages): Old-style checksum, LSN low 32 bits, byte end offset. With --verbose, includes checksum validation status and LSN consistency.

List Mode (-l)

One line per page:

-- Page 3 - INDEX: B-tree Node, Index ID: 157, Byte Start: 0x0000C000