簡化項目部署 ,SpringBoot引入 Flyway 管理數據庫腳本文件

前言:

由於項目設計初期的設計缺陷,數據庫字段設計的不夠完整,我們在開發的過程中可能會不斷的往數據庫中增加表,增加字段,刪除字段等操作,如果項目還沒上線的話,就非常簡單。如果項目上線的話我們就需要執行腳本。

這樣就會造成一個問題,如何保證測試環境數據庫和生產環境的字段一致呢,某個開發人員修改了測試庫的一個字段,如何能夠有效的同步到測試庫,測試通過以後如何有效的同步到多個生產庫。

在沒有任何工具之前,我們需要各自手動執行腳本。然而我遇到了下面這個問題。

生產環境的數據庫一般獨立放,我們開發人員需要通過teamviewer 連接人家的電腦,我可以將我的腳本執行好,那麼我的另一個同事也要遠程連接人家的電腦,並且執行他的腳本,三個同事的話就要執行三次。你可能會說我一個人執行,存在別人漏給我說的情況,並且有個生產環境版本迭代會相對慢,比如一個禮拜,這樣溝通成本就很高,別人用系統缺了字段就會報錯,(我太難了)。

爲了解決這個問題,我學了Flyway

Flyway 是什麼? 

Flyway能夠自動的幫助我們有效的同步各個發佈數據庫之間的狀態,不管你是加了或者刪了一個字段,還是新加了一張表,他都能自動化的跟隨項目的發佈同時發佈。

Flyway 官方網址:

 https://flywaydb.org

如何使用Flyway?

1.新建的項目直接引入Flyway

直接在下圖這個文件夾中管理數據庫腳本文件

 

2. 原有的項目中引入 Flyway

2.1 在pom 文件中引入Jar包。 

    <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
    </dependency>

2.2 需要在resource 文件夾下建立一個  db/migration 的文件夾,在這個文件夾下管理sql腳本數據。

 2.3 SpringBoot 項目中配置了一個連接Mysql信息,數據庫中準備一個叫test的空數據庫。

 

2.4 寫了一個需要執行的腳本文件

2.5 啓動項目,看一下執行效果

可以看到我這個腳本中的文件都已經執行,並且生成了一張schema_version1的表,表裏面添加了一條數據。 

 

schema_version中添加了一條該腳本已經執行的數據,當我們再次啓動這個項目的時候,這個腳本不會再執行,如果想腳本再次執行,直接刪掉表中這條數據,該腳本就會執行。

 

2.6 新寫的幾個腳本文件

 

新增這倆個文件後,啓動項目,運行成果,schema_history裏面就有三條數據.

 

FlyWay有倆種運行文件,一種是以V開頭的,緊接着是版本號,接下來__  (倆個下劃線),再加一個文件後綴(.sql).

一般只會執行一次,執行過後,第二次啓動項目便不會執行這個sql,如果需要執行,刪除表裏面對應的數據。

還有一種是R開頭的文件,只要文件有變更修改便會執行。

項目啓動運行後發現,當你有新的腳本 比如版本號爲1.1 FlyWay 會去數據庫中schema_version中查詢執行成功的最大版本號進行對比,高於數據庫中的版本號則會執行這個文件,

好了,這篇文章就先到這,後面發現更好的內容再次補充,感謝大家閱讀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章