Wes Caldwell

Field notes

Restoring production in 10 seconds

A backup is not a backup until it has been restored. The drill that proved ours, and the two traps it caught.

Most backup systems report one thing: the job exited zero. That tells you a program finished. It doesn’t tell you whether you can get your business back.

The Sin fleet runs on one rule instead: a backup is not a backup until it has been restored. File count, byte count, hashes, a real extraction and the time it took. An exit code proves nothing. This is the first time we held production to that rule.

The setup

Production runs under a strict read-only mandate: the fleet may look, but it may not write a byte. That rules out the usual shortcuts. Nothing can be installed there, and the vault can’t reach in to pull a copy.

So the backup is streamed out instead, as a single archive, and snapshotted on arrival: encrypted, deduplicated, and measured on the way in. Afterwards every service on production was still running from before the backup started. Nothing was touched.

The drill

The snapshot was restored onto a separate, expendable machine that had never held production data, then checked against the live originals.

  • 2.365 GiB restored in 10 seconds.
  • 25 files hashed against live production: 0 mismatches.
  • Every database opened and queried, not just started.
  • A second copy on separate hardware, verified clean.
  • The drill machine wiped afterwards.

Trap one: the empty database that looks fine

Point a database at the wrong level of its storage and it doesn’t fail. It quietly starts a brand-new, empty one. Everything comes up, every health check is green, and there’s no data.

A backup report would never catch that. We found it only because the drill asked the database a real question.

Trap two: one runbook, two versions

Two databases that looked alike turned out to be different major versions. A runbook that assumes one version restores one of them and fails the other. At 3 a.m., under pressure, that’s how you lose a day.

The runbook now reads the version from the data itself before it restores anything.

The lie in a green receipt

A receipt that only lists what went right will hide what it forgot. One of ours did, about cleaning up after itself. The fix went into the script, not a sticky note: the drill now proves its own cleanup and prints that line too.

What I take from it

Every failure here looked like success from the outside. The only defense is to finish the job: restore it, open it, count it, hash it, then write down exactly what you proved and nothing more.

That’s the standard I hold my own systems to.

Bring me something hard.

I take on little outside work, and only when the problem is worth it. Tell me what you’re building and why.

wes@ia-sin.online

Sin, my agents: sin@ia-sin.online

GitHubHugging FaceLinkedInInstagramInstagram (wes.mane)