在Heroku上测试PostgreSQL PostGIS的选项?
我正在创建一个大量使用PostgreSQL的PostGIS扩展的应用程序。我发现: 这对我来说意味着我只能在Ronin和DBs上获得PostGIS。这对我的生产来说是完全好的,我的计划是无论如何在我的生产系统中使用那个级别的DB 然而,我在Heroku上也有一个阶段和开发环境,这意味着我也需要为这些环境提供一个支持PostGIS的数据库,因为我不能在生产数据库中运行测试。我需要一个选项来支持这些环境,因此我想知道以下几点: 除了通过插件进程外,您是否可以连接到Heroku上的DB? 我尝试为测试数据库手动添加一个配置变量,但它不仅仅通过pg:promote神奇地工作——还有其他一些东西可以控制Heroku如何考虑有效的数据库在Heroku上测试PostgreSQL PostGIS的选项?,heroku,Heroku,我正在创建一个大量使用PostgreSQL的PostGIS扩展的应用程序。我发现: 这对我来说意味着我只能在Ronin和DBs上获得PostGIS。这对我的生产来说是完全好的,我的计划是无论如何在我的生产系统中使用那个级别的DB 然而,我在Heroku上也有一个阶段和开发环境,这意味着我也需要为这些环境提供一个支持PostGIS的数据库,因为我不能在生产数据库中运行测试。我需要一个选项来支持这些环境,因此我想知道以下几点: 除了通过插件进程外,您是否可以连接到Heroku上的DB? 我尝试为测
任何其他人们能想到的选择都将不胜感激。我知道SpacialDB有一个封闭的beta版可能会工作(已经在研究了),但还有什么其他人能想到的吗?我只是不愿意为测试/阶段的专用DBs每月额外支付400美元。也许你错过了Heroku上最近发布的受限pg 9.1开发数据库
还有新的起重机计划,可能也适用于您。我们在Heroku上使用PostGIS 1) 您可以从“任何地方”连接到非共享heroku应用程序。一旦运行了更大的数据库,就可以使用连接字符串连接任何应用程序或postgres命令行。在数据库上几乎没有什么不能做的。您不能用更小的共享数据库来实现这一点 2) 我们为登台环境提供了专用数据库。如果您不这样做,那么您就不能在与prod相同的条件下进行真正的测试,您将无法发现问题。我们使用Rails,所以在投入生产之前,我们需要一个“相同”的db来运行迁移 3) 我们在本地(和Jenkins上)运行postgres以再次运行测试。您可以根据需要创建(提供)和删除生产层数据库。入门级生产层数据库的成本为每小时0.07美元(或每天1.67美元);保持数据库的全天候配置将花费您每月50美元。看 提供数据库 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
请注意,您可以一次性执行上述两个命令(&&
确保第二个命令仅在第一个命令成功返回后执行):
2.一旦完成(“可用”),使用上述名称设置数据库URL
(即HEROKU\u POSTGRESQL\u GOLD\u 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运行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: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)