首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用pgbackup将生产数据库传输到Heroku上的登台?获取错误

如何使用pgbackup将生产数据库传输到Heroku上的登台?获取错误
EN

Stack Overflow用户
提问于 2012-05-20 21:01:38
回答 12查看 24.3K关注 0票数 60

在Heroku上,我正在尝试使用pgbackups插件将生产数据库复制到我的临时应用程序中。我按照插件页面上的说明操作:https://devcenter.heroku.com/articles/pgbackups

首先,我捕获了DB:

代码语言:javascript
运行
复制
heroku pgbackups:capture --app production-app 

这是可行的:

代码语言:javascript
运行
复制
HEROKU_POSTGRESQL_PURPLE (DATABASE_URL)  ----backup--->  b238

Capturing... done
Storing... done

但是,当我尝试在登台应用程序上恢复它时:

代码语言:javascript
运行
复制
heroku pgbackups:restore DATABASE `heroku pgbackups:url --app production-app` --remote staging

我得到以下错误消息:

代码语言:javascript
运行
复制
DATABASE_URL does not match any of your databases
 !    Could not resolve database DATABASE
 !    
 !    Available databases: 

我也尝试过输入完整的URL:

代码语言:javascript
运行
复制
 heroku pgbackups:url b238 --app production-app
 heroku pgbackups:restore DATABASE "https://s3.amazonaws.com/..." --remote staging

并尝试将应用程序命名为(而不是--remote staging):

代码语言:javascript
运行
复制
heroku pgbackups:restore DATABASE `heroku pgbackups:url --app production-app` --app staging-app

这些都不管用。有趣的是,错误消息显示没有“可用的数据库”。我假设它指的是登台应用程序,它确实是空的。如果我键入:

代码语言:javascript
运行
复制
heroku pgbackups

我得到了:

代码语言:javascript
运行
复制
 !    No backups. Capture one with `heroku pgbackups:capture`.

要查找可用的备份(生产),我需要键入:

代码语言:javascript
运行
复制
heroku pgbackups --app production-app

我得到了当前备份的列表。我不知道这是否正常,甚至不知道这是否与问题有关,但我认为我应该提到它。

我已经阅读并尝试了这里的每一个答案,但都不起作用。有什么想法吗?

EN

回答 12

Stack Overflow用户

发布于 2015-05-28 08:47:04

2017年中的更新(抄袭Mouri的答案-简化DATABSE_NAME部分)

2015年中更新...

pgbackups附加组件已弃用。不再有pgbackups:transfer了。

将数据库从您的copy复制到yourapp_staging

代码语言:javascript
运行
复制
# turn off the web dynos in staging
heroku maintenance:on -a yourapp-staging

# if you have non-web-dynos, do them too
heroku ps:scale worker=0 -a yourapp-staging

# backup the staging database if you are paranoid like me (optional)
heroku pg:backups capture -a yourapp-staging

# execute the copy
heroku pg:copy your-app::DATABASE_URL DATABASE_URL -a yourapp-staging

然后,在完成后,重新打开转移:

代码语言:javascript
运行
复制
# this is if you have workers, change '1' to whatever
heroku ps:scale worker=1 -a yourapp-staging

heroku maintenance:off -a yourapp-staging

(来源:https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases#upgrade-with-pg-copy-default)

票数 96
EN

Stack Overflow用户

发布于 2016-10-11 11:46:16

更新:您可以运行以下命令将数据库从生产环境转移到登台环境:heroku pg:copy your-app::DATABASE_URL DATABASE_URL -a yourapp-staging

它将提示您确认该操作,一旦确认完成,所有数据都将被迁移。

票数 25
EN

Stack Overflow用户

发布于 2014-06-03 08:43:28

更新:这不再有效。请参考下面的@lucas-nelson的answer

所以现在事情变得更简单了。签出传输命令作为pgbackup的一部分

代码语言:javascript
运行
复制
heroku pgbackups:transfer HEROKU_POSTGRESQL_PINK sushi-staging::HEROKU_POSTGRESQL_OLIVE -a sushi

https://devcenter.heroku.com/articles/upgrade-heroku-postgres-with-pgbackups#transfering-databases-between-heroku-applications

这对我来说效果很好,把生产代码带回了我的临时站点。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10673630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档