Backup Analysis

The inno backup subcommands help you verify backup integrity and understand what changed between backups. Use backup diff to compare page-level changes and backup chain to validate XtraBackup checkpoint continuity.

When to Use

  • Validating that incremental backups are complete before a restore
  • Identifying which pages changed between a full backup and the current state
  • Verifying XtraBackup chain integrity after a backup rotation
  • Cross-referencing tablespace LSNs against backup checkpoint metadata

Quick Start

Compare a backup against the current tablespace:

inno backup diff --base /backups/full/mydb/users.ibd \
                 --current /var/lib/mysql/mydb/users.ibd

Validate an XtraBackup chain:

inno backup chain -d /backups/mysql

Cross-reference with inno verify:

inno verify -f users.ibd --backup-meta /backups/full/xtrabackup_checkpoints

Incremental Backup Comparison

The backup diff command compares page LSNs between two snapshots of the same tablespace:

inno backup diff --base backup/users.ibd --current live/users.ibd --json
{
  "base_file": "backup/users.ibd",
  "current_file": "live/users.ibd",
  "summary": {
    "unchanged": 120,
    "modified": 8,
    "added": 2,
    "removed": 0,
    "regressed": 0
  },
  "modified_page_types": {
    "INDEX": 7,
    "UNDO_LOG": 1
  }
}

Regressed pages (current LSN < base LSN) are unusual and may indicate a partial restore or tablespace corruption.

XtraBackup Chain Validation

The backup chain command reads xtrabackup_checkpoints files from backup subdirectories:

inno backup chain -d /backups/mysql -v

Expected directory layout:

/backups/mysql/
  full_2026-03-01/
    xtrabackup_checkpoints
  incr_2026-03-02/
    xtrabackup_checkpoints
  incr_2026-03-03/
    xtrabackup_checkpoints

The validator checks:

  • At least one full backup exists
  • LSN ranges are contiguous (no gaps)
  • Overlapping ranges are flagged but don't break the chain

Backup Metadata Verification

The inno verify --backup-meta flag cross-references a tablespace's page LSNs against an XtraBackup checkpoint file:

inno verify -f /var/lib/mysql/mydb/users.ibd \
            --backup-meta /backups/full/xtrabackup_checkpoints

This checks that all page LSNs fall within the checkpoint's from_lsn..to_lsn window. Pages outside the window indicate either:

  • The tablespace has been modified since the backup (pages after window)
  • The tablespace contains pages from before the backup's coverage (pages before window)
  • inno verify — structural integrity verification
  • inno checksum — page-level checksum validation
  • inno diff — byte-level comparison between two tablespace files