flyway使用

官網(wǎng)

flyway簡介

Flyway是一款數(shù)據(jù)庫遷移(migration)工具。簡單點說,就是在你部署應(yīng)用的時候,幫你執(zhí)行數(shù)據(jù)庫腳本的工具。Flyway支持SQL和Java兩種類型的腳本,你可以將腳本打包到應(yīng)用程序中,在應(yīng)用程序啟動時,由Flyway來管理這些腳本的執(zhí)行,這些腳本被Flyway稱之為migration。

嵌入微服務(wù)

創(chuàng)建微服務(wù)的時候,就有flyway選項

image.png

已有的微服務(wù)加入flyway

依賴

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

創(chuàng)建 db/migration 目錄

resources 目錄下,手動創(chuàng)建 db/migration 目錄


image.png

創(chuàng)建腳本

規(guī)范

V<VERSION>__<NAME>.sql

首先是大寫字母 V,然后是版本號,要是有小版本可以用下劃線隔開,例如 2_1,版本號后面是兩個下劃線,然后是腳本名稱,文件后綴是 .sql。

啟動

Flyway將在這個空數(shù)據(jù)中創(chuàng)建一張表,用于記錄migration的執(zhí)行情況,表名稱默認為:flyway_schema_history,老版本的表名稱:schema_version

執(zhí)行細節(jié)

  • 我們在定義腳本的時候,除了 V 字開頭的腳本之外,還有一種 R 字開頭的腳本,V 字開頭的腳本只會執(zhí)行一次,而 R 字開頭的腳本,只要腳本內(nèi)容發(fā)生了變化,啟動時候就會執(zhí)行。
  • 使用了 Flyway 之后,如果再想進行數(shù)據(jù)庫版本升級,就不用該以前的數(shù)據(jù)庫腳本了,直接創(chuàng)建新的數(shù)據(jù)庫腳本,項目在啟動時檢測了有新的更高版本的腳本,就會自動執(zhí)行,這樣,在和其他同事配合工作時,也會方便很多。因為正常我們都是從 Git 上拉代碼下來,不拉數(shù)據(jù)庫腳本,這樣要是有人更新了數(shù)據(jù)庫,其他同事不一定能夠收到最新的通知,使用了 Flyway 就可以有效避免這個問題了。
  • 所有的腳本,一旦執(zhí)行了,就會在 flyway_schema_history 表中有記錄,如果你不小心搞錯了,可以手動從 flyway_schema_history 表中刪除記錄,然后修改 SQL 腳本后再重新啟動(生產(chǎn)環(huán)境不建議)。

配置

在 Spring Boot 中,關(guān)于 Flyway 也有不少配置,這些配置都在 application.properties 中進行配置,常用的幾個來和大家說下:

spring.flyway.enabled:是否開啟 flyway,默認就是開啟的
spring.flyway.encoding:flyway 字符編碼
spring.flyway.locations:sql 腳本的目錄,默認是 classpath:db/migration,如果有多個,用 , 隔開
spring.flyway.clean-disabled:這個屬性非常關(guān)鍵,它表示是否要清除已有庫下的表,如果執(zhí)行的腳本是 V1__xxx.sql,那么會先清除已有庫下的表,然后再執(zhí)行腳本,這在開發(fā)環(huán)境下還挺方便,但是在生產(chǎn)環(huán)境下就要命了,而且它默認就是要清除,生產(chǎn)環(huán)境一定要自己配置設(shè)置為 true。
spring.flyway.table:配置數(shù)據(jù)庫信息表的名稱,默認是 flyway_schema_history。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容