在Heroku上测试PostgreSQL PostGIS的选项?

时间:2012-05-30 01:07:30

标签: heroku

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

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

对我来说,我只能在Ronin和DB上面获得PostGIS。对于我来说,生产对我来说完全没问题,我的计划是将生产系统的DB级别用于生产系统。

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

除了通过插件流程,你能连接到Heroku上的数据库吗?

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

人们可以想到的任何其他选择都会受到赞赏。我知道有一个SpacialDB的封闭测试版可能有用(已经在研究过)但是其他任何人都能想到的吗?我只是不愿意每月额外支付400美元用于测试/舞台的专用数据库。

3 个答案:

答案 0 :(得分:3)

您可以根据需要创建(配置)和删除生产层数据库。入门级生产层数据库将花费您每小时0.07美元(或每天1.67美元);它保持数据库全职配置,每月花费50美元。请参阅Heroku Postgres Production Tier Technical Characterization

提供数据库

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)。< / p>

随后您将从备份中恢复,因此可以从上次停止的地方继续:

-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)

有关详细信息,请参阅

答案 1 :(得分:0)

我们在Heroku上使用PostGIS。

1)您可以从“任何地方”连接到非共享的heroku应用程序。一旦运行了更大的数据库,就可以使用连接字符串连接任何应用程序或postgres命令行。你在数据库上做的很少。您不能使用较小的共享数据库执行此操作。

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

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

答案 2 :(得分:-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/也可能适合你。