gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:24:41 25 4
gpt4 key购买 nike

我有一个在 Cedar-10 堆栈上运行的 Heroku 应用程序,它很快就会被弃用。我正在关注 Migrating to the Celadon Cedar-14 Stack指导并在新堆栈上创建了我的应用程序实例。然而,这也自动创建了另一个(空的)PostgreSQL 数据库。

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

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

在搜索这方面的信息时,我遇到了 heroku 的 pg:copypg:transfer 指令,但是在数据库工作时复制它似乎很奇怪很好,并且有付费的“升级”和与之关联的备份。

最佳答案

配置变量方法的问题

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

如果删除第一个应用程序,您的数据库将从 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 实例之间传输数据。该工具使用 native pg_dumppg_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 是您新创建的堆栈。与您无关但仍值得一提的是,target-application 数据库中的任何现有数据都将被销毁。

在此之后,您可能需要像这样在新应用程序中提升数据库:

heroku pg:promote HEROKU_POSTGRESQL_PINK

关于ruby-on-rails - Heroku 数据库在其应用程序被删除后是否存在 - 我可以将其转移到另一个应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33154282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com