Blossom Docs
Blossom

Backups

PostgreSQL Recovery Backups

Configure encrypted PostgreSQL recovery backups and restore into a new Database

PostgreSQL Databases can store encrypted pgBackRest recovery backups in Amazon S3, Cloudflare R2, DigitalOcean Spaces, or other S3-compatible storage. The backup remains available if the source Database is deleted.

Backup Storage

Blossom-managed Backup Storage is selected by default. You can choose your own destination or turn backups off. Without Backup Storage, the Database is usable immediately, but backups, standby, switchover, and automatic failover are unavailable. New PostgreSQL databases start their initial backup during provisioning. An existing Database can select Backup Storage later. Blossom then runs recovery backups daily, encrypts the repository, and keeps a 14-day recovery window by default.

Choose Managed by Blossom to use Blossom’s storage. Under the Database instance’s Backup → Edit settings, choose storage and adjust the recovery window (minimum seven days).

To use your own bucket, add a destination under Integrations → Backup Storage or through the CLI. This list shows only your own destinations and links to the resources using them:

blossom backup_storage:create --data backup-storage.yml

backup-storage.yml:

backup_storage:
  name: production
  cloud_storage_provider_id: cloud_storage_provider-100
  bucket: database-backups
  folder: managed-data
  # Optional. Leave blank to use Blossom's managed default.
  retention: 30

Blossom manages backup timing, repository encryption, verification, and retries. Each Database can override its storage destination’s default retention.

Blossom encrypts the backup repository and does not show storage credentials, database credentials, or repository encryption keys in API responses or Activity logs.

You can turn on the standby as soon as Backup Storage is selected. Blossom reuses a current backup, waits for one already running, or starts one and continues standby creation automatically. A current completed backup remains required before a planned switchover. A standby improves availability but does not replace backup storage.

Create A Backup

blossom backup:create --data '{"backup":{"database_instance_id":"database_instance-100"}}' --follow

The backup runs while PostgreSQL remains available. backup:show reports its status, source, format, size, storage location, and pgBackRest backup label.

Restore A Backup

Restore always creates a new Database instance. It does not overwrite the source database.

In the dashboard, open a completed backup and choose Restore. On the Restore page, choose Shared or Dedicated, review the destination name, Location and size, then select Restore to new instance. Opening the page does not start a restore.

restore.yml:

restore:
  name: restored-postgres
  location_id: location-100
  availability: shared
  size: medium
  backup_storage_id: backup_storage-100
  port: 5433
  # Optional point-in-time recovery target with an explicit time zone.
  target_time: 2026-07-17T14:30:00.123456Z
blossom backup:restore --id backup-100 --data restore.yml --follow

Shared uses your Data Capacity; Dedicated runs on its own Server. Each restored instance gets its own storage and endpoint. Shared is the default where the Location supports it. Restore keeps the source’s storage size and uses the same capacity limits as creating an instance.

The restore defaults to the source Backup’s Backup Storage; set backup_storage_id to use another named destination. Choose the Account region and an unused port. Blossom shows the price, creates a new Database, restores the backup, verifies PostgreSQL readiness, and gives the Database its own private endpoint.

When target_time is present, Blossom restores the selected physical backup and replays archived PostgreSQL WAL through that time. The target must be at or after the selected backup completed. If required WAL is unavailable, the restore fails visibly rather than returning a database at a different point. Leave target_time out to restore the selected backup normally.

Download a PostgreSQL Database

Create a logical export of one Database, then download the completed Backup:

blossom backup:create --data '{"backup":{"database_id":"database-100"}}' --follow
blossom backup:download --id BACKUP_ID --output ./production.dump

The downloaded file is a standard PostgreSQL archive containing schema and data. Blossom verifies and decrypts it locally; you can use it without Blossom later. Existing files are never overwritten. Keep the file private and retain database roles and grants separately, since exports omit ownership and privileges.

Check the archive without connecting to a database:

pg_restore --list ./production.dump
pg_restore --file=/dev/null ./production.dump

Use a compatible PostgreSQL client. Download applies to logical exports, not whole-instance recovery backups. See backup:download for details.

Current Scope

  • PostgreSQL 18 full recovery backups
  • MySQL 9 and MariaDB 12 encrypted logical recovery backups, restored to the backup’s own consistency point
  • MongoDB 8 encrypted archive recovery backups, restored to the backup’s own point
  • encrypted S3-compatible storage
  • daily backups with configurable retention
  • restore into a new Database
  • point-in-time recovery through archived WAL, for PostgreSQL
  • backup records that survive source database deletion
  • PostgreSQL logical exports and verified local downloads

Downloads currently support PostgreSQL logical exports only.

On this page