All pages

Data

Backups and restore

The database, Redis, file storage and permanent disk of every project are backed up daily, and a restore can be undone.

What is kept

Postgres
One a day, kept 7 days. On demand: the newest 10. And any second of the last 7 days (below).
Redis
7 daily, 5 on demand, 2 from before a restore.
File storage
A copy of every file when something changed, at least weekly: 3 daily, 3 on demand, 1 from before a restore.
Permanent disk
Everything on it, once a day while it is in use: 3 daily, 3 on demand, 1 from before a restore.

Restoring

On the Database or Data tab, choose a backup and Restore. The current state is saved first, so a restore can be undone by restoring that.

  • Postgres: the backup is loaded next to the live database and swapped in, so one that fails to load changes nothing. Connections drop for a moment.
  • Redis: unavailable for a few seconds; the address and password stay the same.
  • Files: files not in the backup are removed and every file in it is put back. An application reading during a restore can briefly see a mixture.
  • Disk: the application is stopped, the disk is emptied and the backup unpacked onto it, and the application is started again.
Terminal
arrah db backup my-api
arrah db backups my-api
arrah db restore my-api --backup ID --yes

Restoring Postgres to a moment

Every change to a project's database is archived, so it can go back to any second of the last 7 days — not only to a daily backup. On the Data tab, under Restore to a moment, pick the date and time and restore. The database is rebuilt as it was then, apart from the live one, and swapped in like a backup; the current state is saved first.

  • The archive takes at most a minute to catch up, and a restore waits for it, so the latest second can be chosen.
  • A full copy is taken with each daily backup; the archive is kept to 1 GB per database by dropping the oldest days first.
  • Databases created before this existed have a Turn on button. It starts the database again, so connections drop for a few seconds. Branch environments do not archive.
  • The archive stays on the server; the daily backups are what is copied off it.
Terminal
arrah db restore my-api --at 2026-10-17T14:05:30Z --yes
arrah db pitr my-api   # turn it on for an older database

Not yet

Downloading a backup.