你可以使用分叉在应用程序之间迁移heroku数据库吗?

时间:2012-06-08 15:47:45

标签: postgresql heroku

我们有一个生产数据库,我们希望定期将它快照到我们的临时数据库。

我知道如何使用pgbackups这样做,我想知道是否有人知道如何使用新的HerokuPostgres fork函数。

2 个答案:

答案 0 :(得分:7)

是的,您可以直接从一个应用程序DB创建一个fork到另一个应用程序DB。为此,从主应用程序获取DATABASE_URL的值,然后在以下命令中使用它:

heroku addons:add heroku-postgresql:ronin --fork postgres://username:password@ec2.../database --app yourstagingapp

答案 1 :(得分:3)

添加到克雷格的答案,这里是完成整个工作的a script by freeformz

app=${1}
db_type=${2:-ronin}

old_db=`heroku config -a ${app}-staging | grep ^HEROKU_POSTGRESQL | cut -d : -f 1 | sed s/_URL//`
heroku addons:add heroku-postgresql:${db_type} --fork `heroku config -a ${app} | grep ^DATABASE_URL | cut -d : -f 2-5` -a ${app}-staging
new_db=`heroku config -a ${app}-staging | grep ^HEROKU_POSTGRESQL | grep -v ${old_db} | cut -d : -f 1 | sed s/_URL//`
heroku pg:wait -a ${app}-staging
heroku pg:promote ${new_db} -a ${app}-staging
#Remove the old db
if [ ! -z "${old_db}" ]l; then
  heroku addons:remove ${old_db} -a ${app}-staging --confirm ${app}-staging
fi