From connection string to tested backup

Paste a connection string and pick a schedule. backupd backs it up, encrypts it to your key, proves it restores, and tells you when something is off.

Good morning

Acme · 4 databases, backed up on schedule.

Databases
4
3 active, 1 paused
Backups
2,317
711 this month
Storage
66.5 GB
Compressed size
Verified
98%
Restore tests passed

Recent backups

  • app-prod612 MBVerified12 min ago
  • billing88 MBSucceeded2 h ago
  • billingLost connection to serverFailed3 h ago
  • events1.4 GBVerified9 h ago

Needs attention

  • marketing-site is pausedNo backups for 3 days
  • billing failed onceThe next run succeeded
1 string
To connect a database, no agent.
4 engines
Postgres, MySQL, MongoDB, Convex.
5 min
Uptime checks on every database.
14 days
Free on Starter.

1. Connect

Paste a connection string for a read-only user, pick how often to back up and how long to keep backups. There is nothing to install on your servers.

Add database

backupd connects over TLS. Use a read-only user.

Connection string

postgresql://backup:••••@db.example.com:5432/app

Schedule

Every hour

Keep backups

30 days

CancelTest and add

2. Back up

On schedule, backupd runs your engine’s own dump tool, compresses and encrypts the output as it streams, and stores it. Then it reads the file back to check it.

Backup

app-prod-2026-10-16-0900.pgdump.zst.age
Succeeded
  1. Dumppg_dump -Fc from an exported snapshot
  2. Compresszstd, 2.9 GB to 612 MB
  3. Encryptage, to 3 keys
  4. Upload10 parts of 64 MiB, nothing on disk
  5. CheckRead back, both checksums match

Took 1m 54s · Scheduled

3. Prove it restores

The backup is restored into a temporary database on a sandbox server and every table is counted against what was backed up. More on restore tests

Restore test

app-prod-2026-10-15-0300.pgdump.zst.age
Restorable
Tables
5 of 5
Rows
1,766,383
Took
41s
Sandbox
postgres 16
  1. Fetch the backup612 MB from storage6s
  2. DecryptUnlocked and checksum matched3s
  3. RestoreInto a temporary Postgres 16 database27s
  4. Count rowsEvery table matches the backup4s
  5. Clean upTemporary database deleted1s
Counts per table, backed up against restored
TableBacked upRestoredResult
public.sessions1,402,3771,402,377match
public.order_items241,880241,880match
public.orders96,51296,512match
public.users18,20418,204match
public.invoices7,4107,410match

4. Restore when you need to

Restore into a fresh database, check it, then switch over. Or download the encrypted file and open it with your own key.

Restore this backup

billing-2026-10-15-0000.sql.zst.age

A different database (recommended)Restore into a fresh or staging database, check it, then switch over.
Overwrite billingReplaces the backed-up tables in the original database.

Target connection string

mysql://[email protected]:3306/billing

Replace tables that already exist in the target

CancelStart restore

5. Hear about problems first

A failed backup, a failed restore test or a database that stops answering reaches your team where it works. See alerts

#ops-alerts

backupd APP 03:04

Backup failed · billing

The backup of billing in Acme failed.

Database
billing
Error
mysqldump: Lost connection to server during query
Open backupd

Back up your first database today

Starter is free for 14 days. Your first restore test runs on schedule.