Search code examples
herokuheroku-postgresheroku-cli

Heroku postgres: How to fork pg database with rollback to recover lost data


I deleted 3 rows accidentally from our production database (Heroku postgres). I followed this guide from Heroku on creating a rolled-back fork: https://devcenter.heroku.com/articles/heroku-postgres-rollback

My production DB is called HEROKU_POSTGRESQL_IVORY and is on plan Standard-0.

I have tried multiple combinations of the command that they suggest:

$ heroku addons:create heroku-postgresql:standard-0 --rollback 
HEROKU_POSTGRESQL_IVORY --TO '2018-11-22 13:13+00' --APP my_app

$ heroku addons:create heroku-postgresql:standard-0 --rollback 
HEROKU_POSTGRESQL_IVORY --TO '2018-11-22 13:13+00:00' --APP my_app

$ heroku addons:create heroku-postgresql:standard-0 --rollback 
HEROKU_POSTGRESQL_IVORY --BY '0 days 1 hours 0 minutes' --APP my_app

All three of which have created a DB that wasn't rolled back. When I run heroku pg:info -a my_app, I can see the newly created DB, but the rollback version it gives is never from the desired time, and the rows that I deleted are not present:

Plan:                  Standard 0
Status:                Available
Data Size:             52.4 MB
Tables:                34
PG Version:            10.6
Connections:           8/120
Connection Pooling:    Available
Credentials:           2
Fork/Follow:           Available
Rollback:              earliest from 2018-11-22 14:17 UTC
Created:               2018-11-22 14:10 UTC
Region:                eu
Data Encryption:       In Use
Continuous Protection: On
Forked From:           HEROKU_POSTGRESQL_IVORY
Maintenance:           not required
Maintenance window:    Wednesdays 21:00 to Thursdays 01:00 UTC
Add-on:                postgresql-deep-1111

Solution

  • I realised soon after posting:

    Make sure you use flags in lower case:

    • --to as opposed to --TO
    • --by as opposed to --BY