8

我正在创建一个大量使用 PostgreSQL 的 PostGIS 扩展的应用程序。我找到了这个:

https://devcenter.heroku.com/articles/is-postgis-available

这表明我只能在 Ronin 及以上数据库上获得 PostGIS。这对我来说完全可以用于生产,我的计划是无论如何都要为我的生产系统使用那个级别的数据库。

但是,我在 Heroku 上也有一个阶段和开发环境,这意味着我也需要为这些环境启用 PostGIS 的数据库,因为我无法从生产数据库中运行测试。我需要一个选项来支持这些环境,因此我想知道以下几点:

除了通过插件过程之外,您可以连接到 Heroku 上的数据库吗?

我尝试为测试数据库手动添加配置变量,但它不仅仅通过 pg:promote 神奇地工作——还有其他一些东西可以控制 Heroku 如何认为有效数据库。

人们能想到的任何其他选择将不胜感激。我知道有一个 SpacialDB 的封闭测试版可能会起作用(已经在研究),但还有其他人能想到的吗?我只是不愿意每月为测试/阶段的专用数据库多付 400 美元。

4

3 回答 3

3

您可以根据需要创建(供应)和删除生产层数据库。入门级生产层数据库将花费您 0.07 美元/小时(或 1.67 美元/天);它使数据库保持全时供应,这将花费您每月 50 美元。请参阅Heroku Postgres 生产层技术表征

提供数据库

1.这可以用一两行来完成。

-bash> heroku addons:add heroku-postgresql:crane --remote staging
Adding heroku-postgresql:crane on cool-app-0007... done, v36 ($50/mo)
Attached as HEROKU_POSTGRESQL_GOLD_URL
The database should be available in 3-5 minutes.
 ! The database will be empty. If upgrading, you can transfer
 ! data from another database with pgbackups:restore.
Use `heroku pg:wait` to track status..
Use `heroku addons:docs heroku-postgresql` to view documentation.

尽管配置过程需要 3-5 分钟,但命令提示符将很快返回。根据消息,您可以跟踪配置状态:

-bash> heroku pg:wait --remote staging
Waiting for database HEROKU_POSTGRESQL_GOLD_URL... available

请注意,您可以一次性执行上述两个命令(&&确保第二个命令仅在第一个命令成功返回后执行):

-bash> heroku addons:add heroku-postgresql:crane --remote staging && heroku pg:wait --remote staging

2.一旦完成(“可用”),DATABASE_URL使用上述名称(即HEROKU_POSTGRESQL_GOLD_URL)进行设置。为了避免复制/粘贴,我一次性完成:

-bash> heroku config:set DATABASE_URL=`heroku config:get HEROKU_POSTGRESQL_GOLD_URL --remote staging` --remote staging
Setting config vars and restarting cool-app-0007... done, v37 
DATABASE_URL: postgres://i28asd172a3k2:bd3k2s05sls1a03b8c4efi0b33a@ec2-12-345-678-90.compute-1.amazonaws.com:5562/eexf3mwha92jk6

3.迁移或恢复。

第一次执行上述操作时,您需要设置数据库(例如,通过运行迁移:heroku run rake db:migrate --remote staging并且可能后跟heroku restart --remote staging)。

随后,您将从备份中恢复,从而能够从上次中断的地方继续:

-bash> heroku pgbackups:restore HEROKU_POSTGRESQL_GOLD_URL b001 --confirm cool-app-0007

HEROKU_POSTGRESQL_GOLD_URL (DATABASE_URL)  <---restore---  b001
                                                             HEROKU_POSTGRESQL_ROSE_URL (DATABASE_URL)
                                                             2014/01/12 03:19.29
                                                             16.3KB

Retrieving... done
Restoring... done

创建备份

-bash> heroku pgbackups:capture HEROKU_POSTGRESQL_ROSE_URL

HEROKU_POSTGRESQL_ROSE_URL (DATABASE_URL)  ----backup--->  b001

Capturing... done
Storing... done

删除数据库

-bash> heroku addons:remove HEROKU_POSTGRESQL_ROSE_URL
Removing HEROKU_POSTGRESQL_ROSE_URL on cool-app-0007... done, v35 ($50/mo)

有关详细信息,请参阅

于 2014-01-13T01:20:32.677 回答
0

我们在 Heroku 上使用 PostGIS。

1)您可以从“任何地方”连接到非共享 Heroku 应用程序。运行更大的数据库后,您可以使用连接字符串连接任何应用程序或 postgres 命令行。在数据库上几乎没有什么是你不能做的。您不能使用较小的共享数据库来执行此操作。

2)我们为我们的暂存环境获得了专用数据库。如果你不这样做,那么你就没有真正在与 prod 相同的条件下进行测试,你将无法发现问题。我们使用 Rails,所以我们想要一个“相同”的数据库在投入生产之前运行迁移。

3) 我们在本地(以及在 Jenkins 上)运行 postgres 以再次运行我们的测试。

于 2013-04-04T19:05:30.350 回答
-1

也许您错过了最近在 Heroku 上发布的受限 pg 9.1 开发数据库的公告?

https://postgres.heroku.com/blog/past/2012/4/26/heroku_postgres_development_plan/

还有新的 Crane 计划,http://blog.heroku.com/archives/2012/5/8/crane-production-database-plan-launched/也可能对您有用。

于 2012-05-30T22:02:31.953 回答