Use case: Verified backups

Levelrail creates Postgres, Redis, MySQL and other databases from the dashboard, CLI or API, links them to your apps and backs them up on a schedule to storage you own. A backup file is not a backup until a restore of it has worked, so restore drills are built in.

curl -fsSL https://levelrail.com/install.sh | sudo sh
The Backups page with a Set up backups panel in three steps: add a destination, pick a schedule, prove a restore. A grid of S3-compatible destinations such as Cloudflare R2, Backblaze B2, Wasabi, AWS S3 and MinIO is shown. The Backups page with a Set up backups panel in three steps: add a destination, pick a schedule, prove a restore. A grid of S3-compatible destinations such as Cloudflare R2, Backblaze B2, Wasabi, AWS S3 and MinIO is shown.
S3-compatible targets
  • 13 database engines
  • Weekly restore drills by default
  • Stable Postgres point-in-time restore Stable
  • Beta other engines until a live restore run Beta

How it works

A backup counts once a restore works

Backups run on a schedule to storage you own. A restore drill restores one into a scratch resource, validates it and destroys the copy, and only then does the backup count.

What you get

Everything this use case leans on

  • Thirteen engines

    Thirteen engines are defined, including Postgres, MySQL, MariaDB, Redis and MongoDB. You create them like any other resource and attach them to apps such as Next.js and Node services.

  • Scheduled backups

    Backups run on a schedule with retention, to any S3-compatible bucket. Storage credentials are write-only once saved.

  • Stable

    Postgres point-in-time

    Point-in-time restore for Postgres, covered by a live end-to-end test against object storage that recovers data after both the data volume and the WAL archive volume are deleted.

  • Restore drills

    A drill restores a backup into a scratch resource, validates it and destroys it. It runs weekly by default.

  • Control plane snapshots

    Snapshots of the control plane itself, with the master key kept out of the snapshot. The architecture page shows what the control plane holds.

In the product

What it looks like

  • The Backups section of a database named docs-sample-db, saying no backup targets are connected yet, followed by a Point-in-time restore card with an Enable button and a Placement card. The Backups section of a database named docs-sample-db, saying no backup targets are connected yet, followed by a Point-in-time restore card with an Enable button and a Placement card.
    Per-database backups and an opt-in point-in-time restore, recoverable only from the moment it is enabled. Read the docs
  • The Storage destinations settings page, empty, with an Add destination button and text listing AWS S3, Cloudflare R2, Backblaze B2, MinIO and Wasabi as S3-compatible targets for backups and archives. The Storage destinations settings page, empty, with an Add destination button and text listing AWS S3, Cloudflare R2, Backblaze B2, MinIO and Wasabi as S3-compatible targets for backups and archives.
    Backups go to storage you own: any S3-compatible bucket. Read the docs

Get started

From zero to running

  1. Create the database

    Create the database from the dashboard, CLI or API and note the connection details Levelrail generates.

  2. Attach and schedule

    Attach it to an app, then add a backup schedule and an S3-compatible storage target.

  3. Run a restore drill

    Run a restore drill from the Backups page and read the result before you rely on the backup.

Go deeper

Read it, run it, or read the code

Good to know

Scope and maturity, stated plainly so you can plan around them.

  • Postgres is the stable path: point-in-time restore and the dump, restore and verify cycle both work today. Other engines are beta until each has a live restore run, and their drills check the object and its checksum, which proves the file is whole but not that it replays. Details in backups and storage.
  • Point-in-time WAL is shipped to the backup target only for databases on the control plane's own node, so plan on scheduled dumps for databases placed elsewhere.
  • Keep a copy of the master key apart from the data directory. Backed-up secrets cannot be decrypted without it, and the control plane snapshot leaves it out on purpose. See security for how secrets are handled.

Maturity differs by feature. Feature status lists what is stable, beta or behind a flag, with the evidence for each.

FAQ

Questions

How do I know my database backup works?

Run a restore drill from the Backups page. It checks the object, compares its checksum, restores it into a throwaway resource, validates the result and removes the scratch copy. Drills also run automatically once a week by default.

Does Levelrail support Postgres point-in-time recovery?

Yes, for Postgres. You turn it on per database, and you can recover only from the moment it was enabled. Other engines get scheduled dumps or snapshots and are labeled beta.

Where are database backups stored?

In an S3-compatible bucket that you own, such as AWS S3, Cloudflare R2, Backblaze B2, MinIO or Wasabi. Credentials are write-only once saved.

Run it on a server you own

One command installs the control plane. Apache 2.0, no license key and no paid tier.

curl -fsSL https://levelrail.com/install.sh | sudo sh