Heroku Postgres has two levels of backup protection. The first level is called ‘Continuous Protection’, and this involves storing the Postgres Write Ahead Logs (transaction logs) on S3, using the open source utility WAL-E. The Continuous Protection feature allows Heroku to restore or rebuild your database in the event of a failure.
The second level is logical backups, using the `heroku pg:backups` utility. Logical backups are run using the `pg_dump` utility included with Postgres. These backups need to be enabled by you and afterwards run once per day.
Both of these backup levels work well and should be part of your backup strategy.
But it’s important to note that both backup strategies store the data on AWS services, specifically S3.
S3, or Simple Storage Service, is perfect for storing this type of data. It does so redundantly. And the S3 service has a remarkable uptime record.
But even S3 fails or has downtime, and when it does, the entire Internet grinds to a halt.
It’s for this very reason that your backup strategy for your Heroku Postgres data should include a third level of backups, one that is entirely off the larger AWS network.
In the event of a truly major AWS incident, the peace of mind in knowing that you have a backup of your Heroku Postgres data securely stored elsewhere is priceless!
There are also practical, and in some cases, legal reasons to have an offsite copy of your Postgres data.
We often work with development teams that need a daily or weekly copy of the production database for local development and testing. Remora Backup is a perfect service for this type of workflow.
Depending on the industry or country your business operates within, storing a backup of your data may be legally required. For this reason, Remora Backup offers custom data retention schedules.