我正在创建一个应用程序,该应用程序大量使用PostgreSQL的PostGIS扩展。 我发现这个:
https://devcenter.heroku.com/articles/is-postgis-available
这对我来说意味着我只能在 Ronin 和更高的数据库上获得 PostGIS。 对于生产来说,这对我来说完全没问题,我的计划是无论如何都要为我的生产系统使用该级别的数据库。
但是,我在 Heroku 上也有一个阶段和开发环境,这意味着我也需要一个启用 PostGIS 的数据库来适应这些环境,因为我无法在生产数据库之外运行测试。 我需要一个选项来支持这些环境,因此我想知道以下内容:
除了通过插件进程之外,您可以连接到 Heroku 上的数据库吗?
我尝试为测试数据库手动添加配置变量,但它不仅神奇地通过 pg:promote——还有其他一些东西可以控制 Heroku 如何考虑有效数据库。
人们能想到的任何其他选择都将不胜感激。 我知道SpacialDB有一个封闭测试版可能会起作用(已经在研究),但是还有什么人能想到的吗? 我只是不愿意每月为测试/阶段的专用数据库额外支付 400 美元。
创建(预配)和删除生产层数据库。入门级生产层数据库的费用为 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)
有关详细信息,请参阅
- https://devcenter.heroku.com/articles/pgbackups
- https://devcenter.heroku.com/articles/heroku-postgresql
我们在 Heroku 上使用 PostGIS。
1)您可以从"任何地方"连接到非共享的heroku应用程序。运行较大的数据库后,可以使用连接字符串与任何应用程序或 postgres 命令行连接。在数据库上,您几乎无法执行的操作。您无法使用较小的共享数据库执行此操作。
2) 我们为暂存环境提供了专用数据库。如果您不这样做,那么您就不会在与 prod 相同的条件下真正进行测试,并且您将无法发现问题。我们使用 Rails,因此我们希望在投入生产之前使用一个"相同"的数据库来运行迁移。
3)我们在本地(和Jenkins上)运行postgres来再次运行我们的测试。
也许你错过了最近在 Heroku 上发布的受限 pg 9.1 开发数据库?
https://postgres.heroku.com/blog/past/2012/4/26/heroku_postgres_development_plan/
还有新的起重机计划,http://blog.heroku.com/archives/2012/5/8/crane-production-database-plan-launched/也可能适合您。