transfer db from one heroku app to another faster
heroku, ruby, ruby-on-rails
Solution
It's quite common to migrate databases between staging, testing and production environments for Rails Apps. And `heroku db:pull/push` is painfully slow. The best way I have found so far is using Heroku PG Backups add-on and it's free. I followed following steps to migrate production database to staging server:
1) Create the backup for the production-app db
heroku pg:backups capture --app production-app
This will generate b001 backup file from the main database (usually production db in database.yml)
2) To view all the backups (OPTIONAL)
heroku pg:backups --app production-app
3) Now use the pg:backups restore command to populate staging server database from the last backup file on production server
heroku pg:backups restore $(heroku pg:backups public-url --app production-app) DATABASE_URL --app staging-app
Remember that restore is a destructive operation, it will delete existing data before replacing it with the contents of the backup file.
Problem
Is there a faster way to transfer my production database to a test app? Currently I'm doing a `heroku db:pull` to my local machine then `heroku db:push --app testapp` but this is becoming time consuming. I have some seed data but it is not nearly as accurate as simply testing with my real-world data. And since they're both stored on a neighboring AWS cloud, there must be a faster way to move the data? I thought about using a heroku bundle, but I noticed the animate command is gone? ``` bundles:animate <bundle> # animate a bundle into a new app ```