ruby-on-rails – 在删除应用程序后,Heroku数据库是否存在 – 我可以将其转移到另一个应用程序吗?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在删除应用程序后,Heroku数据库是否存在 – 我可以将其转移到另一个应用程序吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个在Cedar-10堆栈上运行的Heroku应用程序,很快就会被弃用.我正在关注 Migrating to the Celadon Cedar-14 Stack指南,并在新堆栈上创建了我的应用程序实例.但是,这也自动创建了另一个(空的)Postgresql数据库.

>我可以升级到新堆栈但是继续使用现有数据库吗?
>当我删除旧堆栈上的应用程序时,它是否会自动删除与其关联的数据库

我看到数据库URL是在环境变量$DATABASE_URL中设置的 – 这是否意味着我可以以某种方式更新它并将旧数据库链接”到新应用程序?

搜索有关这方面的信息时,我遇到了heroku的pg:copy和pg:transfer指令,但是当它正常工作时复制数据库并且有一个付费的“升级”和已经与之关联的备份似乎很奇怪.

解决方法

配置变量方法的问题

虽然通过将第一个应用程序的DATABASE_URL配置变量复制到第二个应用程序可以在Heroku中使用share a database between two applications,但只有第一个应用程序将具有数据库的主连接(附件).

如果删除第一个应用程序,您的数据库将从Heroku的postgres dashboard中消失.虽然看起来第二个应用程序仍然可以使用数据库. (测试于2015-10-25.)

值得注意的是:

Heroku do reserve the right to change database URLs as required. If this occurs,it will cause your secondary connections to fail,and you’ll need to update the URLs accordingly.

这意味着如果Heroku决定更改数据库的URL,您的新应用程序将失败,并且由于数据库现在已从仪表板中消失,因此您将无法在不接近Heroku的情况下检索新URL. (如果有的话.)

这意味着应用程序与其数据库之间存在比仅仅DATABASE_URL更多的内在连接,并且将其用作传输机制可能不是最佳选择.

使用PGBackups的另一种方法

Heroku official documentation建议使用免费的PGBackups附加组件(老实说,你应该总是运行它)来在Postgres实例之间传输数据.该工具使用本机pg_dump和pg_restore工具.

特别是,您可以使用PG copy功能,如下所述:

PG copy uses the native Postgresql backup and restore utilities. Instead of writing the backup to a disk however,it streams it over the wire directly to the restore process on the new database.

它们为您提供了一种方法,您可以使用单个命令在应用程序之间复制数据库,而无需任何中间存储:

As an alternative,you can migrate data between databases that are attached to different applications.

To copy the source database to the target database you will need to invoke pg:copy from the target application,referencing a source database.

例:

heroku pg:copy source-application::OLIVE HEROKU_POSTGREsql_PINK -a target-application

source-application是您现有的堆栈,target-application是您新创建的堆栈.与您无关,但仍然值得一提的是,目标应用程序数据库中的任何现有数据都将被销毁.

在此之后,您可能需要在新应用程序中升级数据库,如下所示:

heroku pg:promote HEROKU_POSTGREsql_PINK
原文链接:https://www.f2er.com/ruby/265145.html

猜你在找的Ruby相关文章