與配置變量方法
雖然有可能在的Heroku share a database between two applications通過複製所述第一應用到所述第二的DATABASE_URL
配置變量的問題,只有所述第一應用將具有主連接(添加-on)到數據庫。
如果您刪除第一個應用程序,您的數據庫將從Heroku中的postgres dashboard消失。雖然看起來第二個應用程序仍然能夠使用數據庫。 (測試2015-10-25。)
還值得一提的是:
的Heroku做保留根據需要更改數據庫URL的權利。如果發生這種情況,它會導致您的輔助連接失敗,並且您需要相應地更新URL。
這意味着,如果Heroku的決定更改URL的數據庫,新的應用程序會失敗,因爲數據庫正在從你的儀表盤了,你將無法檢索新的URL,而不接近Heroku。 (如果有的話)
這意味着應用程序與其數據庫之間存在更多的內在聯繫,而不僅僅是DATABASE_URL
,並且使用它作爲傳輸機制可能不是最好的想法。
使用PGBackups
的Heroku official documentation
的替代方法建議您使用免費PGBackups附加(其中,說實話,你應該始終運行無論如何)到Postgres的實例之間傳輸數據。該工具使用本地pg_dump
和pg_restore
工具。
特別是,你可以使用PG copy功能,如下所述:
PG副本使用本地PostgreSQL的備份和恢復工具。但是,不是將備份寫入磁盤,而是直接通過電纜將數據流傳輸到新數據庫上的還原過程。
它們方便地提供爲你的應用程序之間的數據庫複製用一個命令的裝置;和,而不需要任何中間存儲:
作爲替代方案,可以遷移掛接數據庫之間的數據適用於不同的應用
要將源數據庫複製到目標數據庫,您需要從目標應用程序調用pg:copy,並引用源數據庫。
例子:
heroku pg:copy source-application::OLIVE HEROKU_POSTGRESQL_PINK -a target-application
哪裏source-application
是現有的堆棧,並target-application
新創建的一個。與您無關,但仍值得一提的是,target-application
的數據庫中的任何現有數據都將被銷燬。
在此之後,可能需要推廣的數據庫在新的應用程序,像這樣:
heroku pg:promote HEROKU_POSTGRESQL_PINK
聽起來像是你創建一個臨時的實例。如果您刪除該實例並且空數據庫仍然存在,只需在儀表板中將其刪除即可。升級您的生產應用程序是一個完全獨立的過程。運行給定的命令並推送您的代碼。新的堆棧將被安裝並與生產數據庫交談。 – Gene