BackupVouch

A backup only counts once it has been restored and checked.

BackupVouch is a Kubernetes operator. It takes your PostgreSQL backups, restores each one into a throwaway database, runs the SQL checks you wrote, and tells you the result.

Early alpha (API v1alpha1). It works end to end in a kind cluster and has not run in production yet. PostgreSQL only.

The backup job succeeded and the restore passed.
NAME     PHASE   LAST BACKUP   VERIFIED   RESTORE TIME
app-db   Idle    7s            True       1
Then the stored file was corrupted. The backup job had succeeded earlier, so a tool that only watches the job would still be green.
NAME     PHASE   LAST BACKUP   VERIFIED
app-db   Idle    27s           False

reason:  ChecksumMismatch
message: the stored backup does not match the
         checksum recorded when it was taken

What it does on every run

You write one BackupPolicy: a schedule, your database, your S3 bucket and a few SQL checks. The operator does the rest and keeps the proof in the resource status.

  1. Back upDump the database and store it with its checksum.
  2. RestoreRestore that stored copy into a scratch Postgres that is deleted afterwards.
  3. CheckRun your SQL, for example “the users table has 3 rows”.
  4. ReportConditions, events, Prometheus metrics, and an optional read-only dashboard.

Why it exists

Most teams find out a backup is broken during an outage. The job said success, but the file was truncated, a credential had changed, or a table was missing.

BackupVouch asks the question every night, before you need the answer: would last night’s backup actually restore, and how long would it take?

  • An alert on backupvouch_verification_success == 0 the day a backup goes bad.
  • A measured restore time to plan around.
  • A plain answer for a manager or an auditor.
  • Failure messages that say what failed and never include row data.

What it is not

It is not a database manager, and it does not do point-in-time recovery. It takes plain dumps and proves them. Tools such as CloudNativePG, Velero and K8up take or restore backups, and FireDrill verifies backups made by other tools. The comparison, with the date it was checked, is in the spec.