2017-04-19 72 views
2

如果這是一個簡單的問題,我很抱歉 - 通過單獨搜索很難找到答案。Postgres - 如何將開發數據庫中的更改部署到現場版本

將開發數據庫中的變更部署到活動版本的工作流程是什麼?

我的應用程序的數據庫是在Heroku上運行的Postgres。它會定期更新用戶內容。我有一個開發版本(含有過時的內容)在本地運行。

我在我的本地數據庫中創建了一個新表,我想現場部署它。如何在不復制活動服務器上的所有工作的情況下執行此操作,並且不克隆我的本地副本?

非常感謝您的幫助!

回答

2

TL;博士

使用Flyway自動應用您的SQL腳本的集合。

數據庫遷移

術語「數據庫遷移」已經出現移動的變化,從開發到測試數據庫結構的這種苦差事和描述了生產機器。

  • 過去,開發人員和管理員以特別的方式完成了這項任務,將SQL和代碼的各個部分放在一起 - 再加上希望和祈禱。
  • 近年來,一些工具似乎將其轉變爲有組織,可靠,可重複,可測試和自我記錄的過程。

遷飛

Flyway項目是一個基於Java的工具包來追蹤一系列SQL腳本和Java jar文件的更新數據庫使用。

這裏沒有特別的魔法。該工具將查找使用約定命名的文件,以便在您的SQL腳本上放置序列號。該工具會在數據庫中創建一個額外的表來存儲其元數據,包括應用的最後一個腳本的編號。該工具會掃描所有更新的文件,並應用它們,並使用上次應用腳本的編號更新元數據表。

因此,部署意味着只需將最新的SQL腳本移動到部署機器上,讓Flyway完成工作。

另一個好處是可以快速將數據庫重建到某個測試點。同樣,適用於持續集成以自動保持數據庫的形狀正確。

您爲這些福利支付的價格是紀律。您必須從不再次在數據庫結構中進行任何即時更改。所有更改都必須作爲SQL腳本編寫(並可選擇作爲Java代碼存儲在jar中)並通過Flyway應用。

如果從數據庫創建的一開始就使用起來更容易。但是你也可以「基線」開始使用現有的數據庫。

Flyway包含命令行工具以及Java API接口。所以即使非Java中心的應用程序也可以使用Flyway。

開源,免費。支持許多數據庫,包括Postgres。

Liquibase

的​​項目是另一種工具,目的遷飛路線頗爲相似。

+0

flywaydb.com沒有解決。 flywaydb.org工作。 – jamie

+0

@jamie固定網址。僅供參考,在Stack Overflow上,歡迎您直接編輯答案以修復此類錯誤。 –

1

我使用EMS DB Comparer for PostgreSQL進行此任務。不幸的是,它不是免費的,但自從幾年以來我找不到更好的選擇。可以比較兩個DB並生成create/alter/etc腳本。很容易,很多選擇。

相關問題