2012-07-29 68 views
3

我一直在應用程序中使用Heroku的共享數據庫一段時間,我想升級到他們的新的基本/起重機/等。生產級數據庫。然而,我並沒有看到明確的路徑來做到這一點。有沒有辦法從Heroku共享數據庫升級到Basic或Crane等生產級數據庫?

,因爲我看到他們的選項有:

  1. 我可以使用DB:拉/ DB:推動從當前的生產數據庫遷移數據/模式到新的數據庫。我可以進入維護模式,移動數據,然後更新配置以指向新的數據庫。不可怕,但我擔心共享數據庫中的舊模式不兼容v9?也許我錯了。這也可能需要很長時間,導致一些主要的停機時間。不酷。

  2. 使用pg:備份創建備份,並使用heroku pg:restore來移動數據。我再次擔心同樣的模式問題,但這會更快。

  3. 從基本/起重機數據庫開始,並使用他們的追隨者概念。這感覺就像是正確的做法,但我不知道這是否適用於共享數據庫。如果是這樣,我不明白如何。

所有這些選項我覺得需要我升級到postgres v9在某些時候,因爲所有的新數據庫都是v9。有沒有辦法在共享環境中做到這一點,然後可能遷移將不那麼痛苦......也許。

任何想法或建議嗎?

回答

1

不要猜測你的數據庫是否兼容,測試。您可以在本地運行多個PostgreSQL副本,只需要配置不同的數據目錄和端口。這樣你就可以隨意測試9.1和8.4。

您通常使用9.1中的pg_dump轉儲8.4數據庫 - pg_dump知道舊版本,但不是更新(顯然)。

除非你對數據庫做了一些不尋常的事情(大概不是,因爲你是在Heroku上),那麼在版本之間就不會有任何問題了。

2

他們的Migrating Between Databases文檔指出,當您開始使用共享實例時,使用追隨者進行快速轉換的選項(3)不起作用。你應該在這裏做的是使用pg:備份來創建第二個數據庫來測試你的應用程序,並確認新的數據庫在那裏正確運行。如果可行,請打開維護模式並重新執行實際遷移。

PostgreSQL 8.4和9.1之間的模式級別不兼容問題很少。該移民文件警告其中的一個,即Bytea的變化。如果你使用Bytea,你可能知道它;這並不常見。這些版本之間的其他大部分更改都是您不太可能使用的功能,例如PostgreSQL 9.0中創建的PL/pgSQL modifications。同樣,如果你使用PL/pgSQL服務器端函數,你也可能知道這一點,Heroku上的大多數人都不知道。