前言
Flyway是一款管理并跟蹤資料庫遷移(migrate)的資料庫版本管理工具。它可以像SVN管理不同人的代碼那樣,管理不同人的sql腳本,進而做到資料庫同步。
它可以幫助我們在不同環境保持資料庫的同步,減少手工操作,同時也減少了遺漏的機會。
Flyway可以內建在項目中,可以與Spring 框結合。在項目發版時,自動執行資料庫腳本,無需人為執行資料庫同步操作。
在主項目中添加flyway的maven添加依賴
<!-- flyway--> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.2.1</version> </dependency>
将上面的依賴添加到主項目的pom.xml中

2. 在application.yml 配置檔案中配置flyway相關配置
需要注意的是,flyway配置放在spring配置下、根據自己實際情況配置相關參數
Springboot flyway配置說明
3.在遷移腳本的檔案夾中建立對應sql腳本
在腳本中寫入相關sql語句
SpringBoot應用運作時flyway會根據腳本進行資料庫的初始化,執行的順序會根據腳本版本号由低到高按順序執行(1.0 -> 1.0.1 -> 1.0.2),每執行完一個版本腳本都會向記錄表flyway_history_schema插入一條資料。
若添加了新的版本腳本,應用啟動時flyway會根據腳本檔案版本到記錄表flyway_history_schema查詢是否有對應的版本腳本被執行了,如果沒有相應的版本腳本記錄才會執行腳本。
不過需要注意:flyway不支援版本復原。(需手動,比較悲劇的一點)、是以需要準備兩份sql,如果遷移的sql執行成功後需要復原,就執行對應的復原sql,如果遷移失敗,flyway可以通過注解執行復原。
4.啟動了SpringBoot項目後,就會自動幫你執行SQL檔案
執行曆史可以在 flyway_schema_history 表中檢視、已經執行過的遷移sql就不會再執行,主要是在這個曆史表中控制,如果需要重新執行,那麼删除對應版本及以後的執行曆史重新開機項目就會重新執行對應腳本
重新整理對應資料庫,就可以看到通過遷移腳本生成的表結構。
我們是在中途嘗試使用flyway,是以開發環境會有一個已存在的資料庫。我們需要從開發環境中導出資料庫腳本,并對開發環境資料庫進行baseline标記。導出的腳本可用于新環境的部署。
如果我們已經有了生産環境,而且生産環境和開發環境的資料庫已經有了較大的差異。暫時可以想到的方案大概有2個方案:
方案一:
在生産環境備份資料庫,然後建立一個全新的資料庫,手動将備份庫裡的資料導入到新的資料庫。
方案二:
基于生産環境的資料庫,建立V1版本的腳本;基于開發庫相對于生産庫的變更,建立V2版本的腳本。在開發環境baseline,然後修改版本記錄,改為2。在生産環境中baseline,然後migrate使其更新到2。
需要更多的人工介入,但是比較穩妥;
難點在于溯源出正确的差異,編制V2腳本。
本次的學習到這裡就結束了,因為圖圖也是第一次接觸這種資料遷移軟體,是以總結不是很到位,如果有問題可以加圖圖微信,大家一起學習、一起來解決。
如果對您有幫助 請點個關注,萬分感謝
(QQ招聘群 710566091微信招聘群 請加圖圖微信)