一般來說,數據庫遷移系統會使用以下方法或變體
。 往數據庫里增加一張表,用于存放數據庫的版本。
。 把數據庫變更的命令統一存放到帶版本信息的變更集中。在Liquibase里,這些變更被保存為XML文件。Flyway實現方式有點兒不太一樣,這些變更集被保存為SQL文件。萬一過于復雜,也可以是單獨的Java類。
。 Liquibase需要升級一個數據庫時,它會查看元數據表并決定這些變更集的順序以將數據庫升級成最新版本。
如前文所述,許多數據庫管理系統都如此運轉。它們最主要的不同一般是變更集的保存方式,以及如何決定運行哪一個變更集。它們可能會像Liquibase那樣保存為XML文件,也可能像Flyway那樣保存為SQL文件。原生系統更經常使用后者,它還有一些優點。Clojure的生態系統也至少有一個類似的數據庫遷移系統,稱為Migratus。
滾動升級
在遷移數據庫時另一個需要考慮的事是如何配合滾動升級。這種類型的部署非常常見,尤其是在你不想讓最終用戶面臨停機,或者只允許極低停機時間時。
這里有一個滾動升級企業客戶數據庫的例子。
一開始時,我們有一個運行中的系統,一個數據庫和兩臺服務器。在兩臺服務器前面有一個負載均衡設備。
我們正準備推出一個數據庫結構的變更,它會同時影響到服務器。我們準備把數據庫中的客戶名字段分成姓和名兩個單獨的字段。
想了解更多IT資訊,請訪問中培偉業官網:中培偉業