簡體   English   中英

對Heroku生產數據庫進行分區-可能嗎?

[英]Partitioning Heroku Production Database — Possible?

我正在考慮為生產數據庫支付$ 50 / mo的費用,這樣我就可以將RailGIS 4應用程序與PostGIS一起使用了。 我的問題是我想繼續在“登台”環境中進行開發,但還不能證明為兩個生產數據庫付費是合理的。 過渡顯然只是生產的克隆,因此僅將兩個應用程序指向同一個數據庫URL( post )可能會引起一些嚴重的麻煩。

有什么方法可以對數據庫進行分區,或者您建議使用其他策略嗎?

heroku支持的最初答案是“否”,但我希望有一個臨時解決方案。

謝謝!

首先,我強烈建議您僅支付額外​​的$ 50 / mo。 為此,您會獲得各種很酷的東西,例如分叉管道 ,以及這樣的事實。 老實說,我不知道這在清除登台數據庫時是否最終會擦除您的生產數據。 請先備份,然后再嘗試。

我將這個答案視為對技術挑戰而不是商業決策的答案。 無需再費周折,

使用Heroku Postgres模式在同一數據庫上設置多個環境

首先,我刪除了現有的dev數據庫,並將生產數據庫添加到我的生產應用程序中。

heroku addons:add heroku-postgresql:crane

> Adding heroku-postgresql:crane on test-shared-app... done, v# ($50/mo)
> Attached as HEROKU_POSTGRESQL_RED_URL

這將數據庫附加為RED ,因此HEROKU_POSTGRESQL_RED_URL使用適合您應用的顏色替換HEROKU_POSTGRESQL_RED_URL

這會將數據庫附加到生產應用程序,但是我們需要連接到同一應用程序進行登台。 首先,創建登台模式

heroku run "bundle exec rails runner 'ActiveRecord::Base.connection.execute(%q{CREATE SCHEMA staging})'"

接下來,創建登台應用程序。 有關更多信息,請參見為應用程序管理多個環境

heroku create --remote staging test-shared-app-staging
heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging

然后,從現有應用程序復制環境數據。 在URL末尾添加?schema_search_path=staging

heroku config --remote heroku --shell
# make note of your database URLs
heroku config:set --remote staging \
  DATABASE_URL=postgres://...?schema_search_path=staging \
  HEROKU_POSTGRESQL_RED_URL=postgres://...?schema_search_path=staging

並推動分期

git push staging master

現在,在臨時運行遷移

heroku run --remote staging bundle exec rake db:migrate

並嘗試一下。

我的“應用”正在http://test-shared-app.herokuapp.com/postshttp://test-shared-app-staging.herokuapp.com/posts上運行。 您可以在https://github.com/benmanns/heroku-shared-app上查看源代碼。

如果您是我,我會在適當的時候使用生產數據庫(開始賺錢或吸引更多用戶,等等)。 我將復制生產數據庫中的所有表,並通過在名稱前加上“ stag_ {original_table_name}之類的名稱來為新表賦予新名稱。因此,您將擁有兩組相同的表。在模型中,使它們在表上使用新表暫存環境:

class Foo < ActiveRecord::Base
  self.table_name = "staging_#{self.class.name}" if Rails.env.staging?

我的確很便宜……在真正的Rails大師看來,這可能是一個丑陋的解決方案。

Heroku模式是另一種解決方案。 它是一個Heroku插件,基本上可以讓您運行一個命令來應用Benjamin Manns的多種模式解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM