2016-03-08 82 views
1

簡單的問題,但我似乎無法找到答案。Rails 4 - rake db:用Heroku在網站上遷移

在一天中有活動用戶的實時生產站點上,遷移數據庫而不進入維護模式的最佳方式是什麼?

在我的情況下,我已經添加了幾列到我的數據庫,並希望遷移的變化。通常,我只需運行heroku maintenance:on,然後遷移我的更改,然後關閉維護 - 顯然這將避免推送和遷移之間的任何異常/錯誤。現在我一直有活躍的用戶,我覺得必須有一種方法可以無縫地做到這一點 - 這不會踢任何人,並拋出維護屏幕。

希望有任何幫助。請鏈接任何文檔,如果這是在某個地方討論 - 嚴重無法找到任何東西。

+1

我想你想要的是這樣的東西:http://stackoverflow.com/questions/15500530/blue-green-deployment-on-heroku-or-another-cloud-platform-as-a-服務 – Albin

回答

1

零停機數據庫遷移策略取決於多種因素:

  • 你想添加,刪除或重命名列?你需要改變列類型還是想添加索引?
  • 表格有多大,遷移需要多長時間?
  • 該表大量使用或可以禁用此模型。
  • 你使用什麼數據庫引擎?有些數據庫甚至會對整個表進行微小的更改。
  • 數據庫用戶具有什麼級別的訪問權限?有些工具(如Soundcloud's lhm需要更多的權利比平常Rails應用程序。

你會發現一些例子,如何在這個readme添加或刪除列。