inno info

Inspect InnoDB system files, compare LSNs, or query a live MySQL instance.

Synopsis

inno info [--ibdata] [--lsn-check] [-d <datadir>] [-D <database> -t <table>] [--host <host>] [--port <port>] [--user <user>] [--password <pass>] [--defaults-file <path>] [--json] [--page-size <size>]

Description

Operates in three mutually exclusive modes:

ibdata1 inspection (--ibdata)

Reads page 0 of ibdata1 (the system tablespace) and decodes its FIL header -- checksum, page type, LSN, flush LSN, and space ID. Also attempts to read checkpoint LSNs from the redo log, trying the MySQL 8.0.30+ #innodb_redo/#ib_redo* directory first, then falling back to the legacy ib_logfile0.

This gives a quick snapshot of the system tablespace state without starting MySQL.

LSN consistency check (--lsn-check)

Compares the LSN from the ibdata1 page 0 header with the latest redo log checkpoint LSN. If they match, the system is "in sync" and InnoDB shut down cleanly. If not, the difference in bytes is reported, indicating that crash recovery may be needed.

MySQL query mode (-D <database> -t <table>)

Requires the mysql feature (cargo build --features mysql).

Connects to a live MySQL instance and queries INFORMATION_SCHEMA.INNODB_TABLES and INNODB_INDEXES for the space ID, table ID, index names, and root page numbers. Also parses SHOW ENGINE INNODB STATUS for the current log sequence number and transaction ID counter.

Connection parameters come from CLI flags or a .my.cnf defaults file. CLI flags override defaults file values.

Flags

FlagShortRequiredDefaultDescription
--ibdata--No--Inspect ibdata1 page 0 header and redo log checkpoints.
--lsn-check--No--Compare ibdata1 and redo log LSNs for sync status.
--datadir <path>-dNo/var/lib/mysqlMySQL data directory path. Used by --ibdata and --lsn-check.
--database <name>-DNo--Database name for MySQL query mode.
--table <name>-tNo--Table name for MySQL query mode.
--host <host>--NolocalhostMySQL host for live queries.
--port <port>--No3306MySQL port for live queries.
--user <user>--NorootMySQL user for live queries.
--password <pass>--No--MySQL password for live queries.
--defaults-file <path>--NoAuto-detect .my.cnfPath to a MySQL defaults file.
--json--NoOffOutput in JSON format.
--page-size <size>--NoAuto-detectOverride page size for ibdata1 reading.

Examples

Inspect ibdata1 header

inno info --ibdata -d /var/lib/mysql

Check LSN sync status

inno info --lsn-check -d /var/lib/mysql

Query table info from a live MySQL instance

inno info -D sakila -t actor --host 127.0.0.1 --user root --password secret

Use a defaults file for MySQL connection

inno info -D sakila -t actor --defaults-file ~/.my.cnf

JSON output for ibdata1 inspection

inno info --ibdata -d /var/lib/mysql --json

Scripted sync check

if inno info --lsn-check -d /var/lib/mysql --json | jq -e '.in_sync'; then
    echo "InnoDB is in sync"
else
    echo "InnoDB may need crash recovery"
fi

Output

ibdata1 Inspection (Text Mode)

ibdata1 Page 0 Header
  File:       /var/lib/mysql/ibdata1
  Checksum:   2741936599
  Page No:    0
  Page Type:  8 (FSP_HDR)
  LSN:        19218432
  Flush LSN:  19218432
  Space ID:   0

Redo Log Checkpoint 1 LSN: 19218432
Redo Log Checkpoint 2 LSN: 19218000

ibdata1 Inspection (JSON Mode)

{
  "ibdata_file": "/var/lib/mysql/ibdata1",
  "page_checksum": 2741936599,
  "page_number": 0,
  "page_type": 8,
  "lsn": 19218432,
  "flush_lsn": 19218432,
  "space_id": 0,
  "redo_checkpoint_1_lsn": 19218432,
  "redo_checkpoint_2_lsn": 19218000
}

LSN Check (Text Mode)

LSN Sync Check
  ibdata1 LSN:          19218432
  Redo checkpoint LSN:  19218432
  Status: IN SYNC

If out of sync:

LSN Sync Check
  ibdata1 LSN:          19218432
  Redo checkpoint LSN:  19217920
  Status: OUT OF SYNC
  Difference: 512 bytes

LSN Check (JSON Mode)

{
  "ibdata_lsn": 19218432,
  "redo_checkpoint_lsn": 19218432,
  "in_sync": true
}

MySQL Query Mode

Table: sakila.actor
  Space ID:  42
  Table ID:  1234

Indexes:
  PRIMARY (index_id=157, root_page=3)
  idx_actor_last_name (index_id=158, root_page=4)

InnoDB Status:
  Log sequence number 19218432
  Log flushed up to   19218432
  Trx id counter 12345