Skip to content

Matches page titles and page text. Forty pages, indexed at build time.

Exporting

pg_dump works on every plan at any time. The dashboard also produces a custom-format dump for you, with a link that lasts 24 hours, and a final export is offered at cancellation.

There are two ways to get your data out: run pg_dump yourself, or ask the dashboard to produce the dump for you.

Getting data out is a design property, not a concession. Standard PostgreSQL, no proprietary storage format, no proprietary protocol.

Do it yourself, any time

bash
pg_dump \
  --format=custom \
  --file=appdb-$(date +%F).dump \
  "postgresql://[email protected]:25439/appdb?sslmode=verify-full&sslrootcert=system"

This works on every plan, with no rate limit and no request to us, whenever your service is running. The example uses 25439, the direct port of one service. Use your own service's, the higher of the two on its Connect tab. A large export on the direct endpoint does not occupy a pooled server connection for its duration.

A suspended service is a stopped service, so your own pg_dump cannot connect to one. That is the case the next section exists for.

Schema only

Useful for setting up a matching environment:

bash
pg_dump --schema-only --file=schema.sql "postgresql://..."

Ask the dashboard for one

  1. Open Import and export in the dashboard.
  2. Pick the service under Service to export.
  3. Press Request an export.

There is no support ticket and no waiting for someone to answer.

What happens then:

  1. We run pg_dump --format=custom against your service and write the file to object storage.
  2. We email whoever asked for it when the file is ready.
  3. The export appears in the service's export list with its size and its SHA-256 checksum.

The export reads the whole database, so a large service takes a while. Only one export of a service runs at a time; asking for a second while one is in flight is refused rather than queued.

Producing an export does not stop, restart or reconfigure your service, and it does not block other operations on it. You can request one while an upgrade or a resize is running.

The dump we produce is always the whole database, because an export you can narrow is an export you can believe is complete when it is not.

The link is valid for 24 hours from the moment the dump completes. Within that window you may use it as many times as you need. It is not single-use: the file is an object in storage behind a presigned URL, and nothing in that arrangement can enforce one fetch, so do not build a process that assumes one attempt.

Every time we hand out the link it is recorded in your audit log, and the first disclosure is stamped on the export record.

Check what you downloaded

Each ready export publishes the SHA-256 checksum of the file. Compare it against what you received:

bash
shasum -a 256 appdb.dump

On Linux, sha256sum appdb.dump gives the same value.

It works while you are suspended

Export is available in every state in which your data still exists, including while an invoice is unpaid and while the organisation is suspended. Withholding a customer's data over a bill is not a collections strategy we operate.

This is the one thing the dashboard export does that your own pg_dump cannot. A suspended service is stopped and refuses connections, so nothing you run from outside can reach it. We produce the dump from the host, against the stopped instance, which is why it still works.

The one state in which we cannot produce a dump is one where there is nothing left to dump: a service that has already been deleted.

At cancellation

A final export is offered as part of cancellation, before anything is deleted, and it stays available right up to deletion. Cancelling is two clicks from billing, and the export offer is part of that flow rather than something you have to know to ask for.

What you will see

Each export in the list carries a status:

StatusWhat it means
pendingQueued
runningThe dump is being taken
readyThe file exists and the link works
expiredThe 24 hours elapsed. The link stopped working, the file is still there
purgedWe no longer hold the dump
failedThe dump did not complete

expired and purged are deliberately different answers. If you need the file again after either, ask for another export.

Restoring it

The file is an ordinary pg_dump custom-format archive, and every export records the PostgreSQL major version it was taken from. pg_restore loads it into any PostgreSQL server, ours or anyone else's, subject to the same version rule as any other dump: use a pg_restore at least as new as the server that produced the file. The commands are in dump and restore.

Troubleshooting

"No services to export." The role you are signed in as cannot read any service. The billing role sees billing and no services. See next steps for what each role can do.

A second request is refused. One export per service runs at a time. Wait for the first.

The link has stopped working. It was valid for 24 hours. Request another export.

The checksum does not match. The download was truncated. Fetch it again within the window and compare again before you rely on the file.

Your own pg_dump cannot connect. If the service is suspended it is stopped, and nothing outside can reach it. Use the dashboard export instead.