innodb-utils 5.1.0

InnoDB file analysis toolkit
Documentation
# 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:

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

Validate an XtraBackup chain:

```bash
inno backup chain -d /backups/mysql
```

Cross-reference with `inno verify`:

```bash
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:

```bash
inno backup diff --base backup/users.ibd --current live/users.ibd --json
```

```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:

```bash
inno backup chain -d /backups/mysql -v
```

Expected directory layout:

```text
/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:

```bash
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)

## Related Commands

- `inno verify` — structural integrity verification
- `inno checksum` — page-level checksum validation
- `inno diff` — byte-level comparison between two tablespace files