从Heroku下载PG数据库作为文件

时间:2015-03-25 18:13:44

标签: ruby-on-rails postgresql heroku

我试图下载我们的暂存数据库的文件(副本)。我在these docs之后使用pgbackups

我创建了一个备份,而不是public-url使用heroku pgbackups:url b462 --app staging-appname,这有效。

我运行命令curl -o latest.dump heroku pg:backups <public-url> b462 -a staging-appname并获取 curl:未指定网址!

它所说的<public-url>我已经复制了实际的长公共网址,如https://s3.amazonaws.com/reallly-long-url-with-acess-key-ect

我在这里缺少什么?

4 个答案:

答案 0 :(得分:6)

以下将创建备份:

heroku pg:backups capture --app name-of-the-app

使用终端

中打印的以下信息
---backup---> b001

在以下命令中

heroku pg:backups public-url b001 -a name-of-the-app

会给你转储的网址

答案 1 :(得分:2)

在运行heroku pgbackups:capture --app=staging-appname后,请立即尝试以下操作以获取最新文件:

curl -o latest.dump `heroku pgbackups:url --app=staging-appname`

仅当您要查找特定的旧文件时才需要b..

答案 2 :(得分:2)

我也在与this doc挣扎,并且Prakash的建议对我不起作用(错误抱怨无法解析不属于URL的'heroku',所以语法似乎是不好,至少对于我正在使用的pg或pgbackup gem的版本。)

我也试过wget,正如heroku doc中所建议的那样,无济于事。

当我感到难过时,我会把它想到最简单的元素,这使我得到了一个比文档更简单的解决方案......

我在Rafael的回答中使用了命令来生成一个临时URL来检索转储文件:

heroku pg:backups public-url b001 -a name-of-the-app

然后,我没有将生成的网址插入curl命令,而是我只是将该网址粘贴到Chrome的地址栏中,然后使用我的网络浏览器下载了该文件。

下载成功,db文件有效。

答案 3 :(得分:0)

用更多的糖,这里有一个shell脚本示例,用于从heroku下载mysql dump并将其恢复为本地数据库

backup_name=$1

if [ -z "$backup_name" ]
  then
    echo "You must supplied heroku backup name (ex: b001)"
    return
fi

echo "Loading '$backup_name' database from heroku"

heroku pg:backups public-url $backup_name -a your-app-name > last_url.txt
curl -o latest.dump `cat last_url.txt`
dropdb local-db-name
createdb local-db-name
pg_restore -c -d local-db-name latest.dump

您需要将heroku备份名称作为输入。