Backup and restore
Your database is backed up automatically every hour, and an encrypted copy is kept in another region. Restore any backup with a single command.
There is nothing to turn on. Every project with a database gets a backup every hour.
runlot pg generationsepoch/seq Time Size
3/17 2026-09-05 14:00 41 MB
3/16 2026-09-05 13:00 41 MB
3/15 2026-09-05 12:00 40 MB
…Retention
| Plan | Backups kept | Retention |
|---|---|---|
| Free | 24 | 24 hours |
| Pro | 168 | 7 days |
Backups are taken once an hour, so the number of backups matches the retention window.
The most recent backup is never deleted, regardless of age or count. Even a project that has been idle for a long time keeps its last backup.
When the data has not changed
If nothing has changed since the previous backup, no new backup is created. A record of the backup check is still kept. This keeps unused projects from storing many copies of identical data.
Even a project that was stopped automatically because it had no requests is started briefly at backup time, backed up, and stopped again. Being stopped never means skipping a backup.
Encryption and storage location
Each backup is encrypted with a per-project key. That key is in turn encrypted with a master key, and the encrypted backup data is stored in object storage in another region.
Restoring
runlot pg restore 3/15
runlot pg restore latestBefore a restore begins, a backup of the current data is taken first. So even if you restore the wrong backup, you can get back to the state you were in before the restore.
The current data is backed up first, then restored from backup 3/15. Anything written after that point is lost.
Type the project name to continue: my-appTo restore, you must type the project name exactly. We do not accept a simple yes/no confirmation for an action that is hard to undo. This command requires the admin role.
Even with latest, the CLI lists the backups first and shows you the one it will actually restore, so that what you saw on screen and what gets restored cannot diverge.
Right after a restore
A restore stops the project and starts it again from the backup you chose. For up to 3 seconds after it starts, database requests may get a 57P03 error. See the reactivation window for details.
Which points in time you can restore to
Restoring to an arbitrary point in time is not offered. You can only choose one of the hourly backups. The reasoning behind this limit is explained in the 150 MB cap — it comes down to the cost of taking a single backup.
Diagnostic exports are not backups
runlot pg exportThe file this command produces is not managed as a backup and cannot be used to restore. Use it to share your current state with a support request.