Restore testing for Postgres backups

A backup you've never restored is a hope.

Firedrill restores every backup on real infrastructure, verifies the data, and sends you the proof.

AES-256-GCM encryptedRead-only accessSOC 2-ready evidenceSupabase · Neon · Railway · Postgres

The auditor question

SOC 2 asks two things about backups: are they off-site, and are they tested?

Firedrill answers both — automatically. Off-site encrypted storage, and a restore drill on real infrastructure with per-check evidence for every backup.

Preparing for SOC 2? See how Firedrill fits your audit →

A dark records vault with a single archive drawer pulled open, glowing under inspection light

How a drill works

When did you last run a fire drill on your database? Firedrill runs one on every backup.

01

Backup

pg_dump streams from your database through a read-only role. We can't write to your data — ever.

02

Encrypt & store off-site

AES-256-GCM with a per-project key, before a single byte leaves the pipeline. Stored on independent infrastructure.

03

Restore to a real instance

Every backup is restored onto a fresh, ephemeral Postgres — same major version as yours. Not a checksum. An actual restore.

04

7 integrity checks

Restore exit, schema hash, table presence, row counts, index integrity (amcheck), sample queries, recovery time.

05

Drill report

Per-check evidence, appended to an immutable record. Forward it to your auditor unedited.

This is a drill report.

Every backup gets one. Evidence, not vibes.

production-db · backup 2026-07-04 02:00 UTCDRILL PASSED
restore_exitpg_restore completed cleanly
schema_hashsha256 matches source exactly
table_presence142 / 142 tables present
row_counts142 tables within tolerance
amcheck38 btree indexes valid
sample_queries10 / 10 tables readable
durationrecovery time 94.2s — measured, not guessed

This restore was performed on real infrastructure by Firedrill on 2026-07-04. Verification ID 3f9c2e1a.

Abstract visual: a grid of dark indicators with a row lit ember as checks pass

Recovery time

Know your real recovery time before you need it.

Every drill measures how long the restore actually took — on real hardware, with your real data. Measured, not guessed, and trended as your database grows.

last drill: passed · recovery time 4m 12s

We drill ourselves

Firedrill runs on Firedrill.

A canary database we own goes through the exact pipeline your data does — backed up, encrypted, and restore-drilled every six hours, forever. And because nothing inside a system can report that system's own death, an independent monitor outside our infrastructure watches every stage and pages us on silence.

In its first hour of life, the canary caught a real gap — a brand-new Postgres major version our tooling didn't cover yet — and the alert was in our inbox within minutes. Fixed before a single customer could hit it. That's the product, working on us first.

canary: drill passed · every 6h · external dead-man watch

Point us at any pg_dump file.

Get a drill report in minutes. No signup for your database required — it works on backups made by Supabase, SimpleBackups, or your own cron job.

Run a free drill →

one free drill per month · report in minutes · your data never stored