Flyway客戶端使用


一、flyway介紹

  Flyway是一款開源的數據庫版本管理工具,它更傾向於規約優於配置的方式。Flyway可以獨立於應用實現管理並跟蹤數據庫變更,支持數據庫版本自動升級,並且有一套默認的規約,不需要復雜的配置,Migrations可以寫成SQL腳本,也可以寫在Java代碼中,不僅支持Command LineJava API,還支持Build構建工具和Spring Boot等,同時在分布式環境下能夠安全可靠地升級數據庫,同時也支持失敗恢復等。

  Flyway主要基於6種基本命令:Migrate, Clean, Info, Validate, Baseline and Repair

  目前支持的數據庫主要有:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL(including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL(including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix.

二、客戶端使用說明

2.1客戶端相關文件介紹

解壓flyway-commandline-4.1.2-windows-x64.zip打開flyway-4.1.2目錄

conf:主要存放一些數據庫的配置文件,常見的配置有

flyway.url=jdbc:oracle:thin:@192.168.10.222:1521:orcl    ----數據庫url+數據庫名

flyway.user=gams0308    ----數據庫用戶名

flyway.password=bs       ----數據庫密碼

drivers:數據庫連接驅動,若出現以下錯誤,則把對應的數據庫驅動放在這個文件夾下 

jarsjreflyway相關java運行環境可以不用操作

libflyway相關jar

重點關注sql文件夾,這里頭存放flyway要執行的腳本。

腳本命名規則: 

 

1、前綴(可配置,默認值:V

2、版本(以點或下划線區分開來)

3、分隔符(兩個下划線)

4、描述(下划線或空格分開)

5、后綴(可配置,默認情況下:SQL

2.2 Flyway常用的命令介紹

命令一:Migrate

Migrate是指把數據庫Schema遷移到最新版本,是Flyway工作流的核心功能,FlywayMigrate時會檢查Metadata(元數據)表,如果不存在會創建Metadata表,Metadata表主要用於記錄版本變更歷史以及Checksum之類的。

結合客戶端理解:

執行sql文件夾中未執行的sql,將sql版本更到最新。

 

命令二:Clean

Clean相對比較容易理解,即清除掉對應數據庫Schema中的所有對象,包括表結構,視圖,存儲過程,函數以及所有的數據等都會被清除。

Clean操作在開發和測試階段是非常有用的,它能夠幫助快速有效地更新和重新生成數據庫表結構,

特別注意:在生產環境上禁止使用該命令,使用不當將刪除所有生產數據表!

結合客戶端理解:

刪除制定數據庫里頭的所有表。

 

命令三:Info

Info用於打印所有Migrations的詳細和狀態信息,其實也是通過Metadata表和Migrations完成的,下圖很好地示意了Info打印出來的信息。

Info能夠幫助快速定位當前的數據庫版本,以及查看執行成功和失敗的Migrations

結合客戶端理解:

輸入所有flyway執行過的信息。

 

命令四:Validate

Validate是指驗證已經ApplyMigrations是否有變更,Flyway是默認是開啟驗證的。

Validate原理是對比Metadata表與本地MigrationsChecksum值,如果值相同則驗證通過,否則驗證失敗,從而可以防止對已經Apply到數據庫的本地Migrations的無意修改。

結合客戶端理解:

校驗schema_version表的執行情況

 

命令五:Baseline

Baseline針對已經存在Schema結構的數據庫的一種解決方案,即實現在非空數據庫中新建Metadata表,並把Migrations應用到該數據庫。

Baseline可以應用到特定的版本,這樣在已有表結構的數據庫中也可以實現添加Metadata表,從而利用Flyway進行新Migrations的管理了。

結合客戶端理解:

設定schema_version表的基線執行版本。

 

命令六:Repair

Repair操作能夠修復Metadata表,該操作在Metadata表出現錯誤時是非常有用的。

Repair會修復Metadata表的錯誤,通常有兩種用途:

 

移除失敗的Migration記錄,該問題只是針對不支持DDL事務的數據庫。

重新調整已經應用的MigratonsChecksums值,比如:某個Migratinon已經被應用,但本地進行了修改,又期望重新應用並調整Checksum值,不過盡量不要這樣操作,否則可能造成其它環境失敗。

結合客戶端理解:

刪除schema_version表里頭失敗的記錄。

三、常用操作

3.1 首先配置cof文件夾里頭的flyway.conf文件,制定數據庫以及用戶名密碼: 

例如: 

3.2 將要執行sql放到sql文件夾中,若腳本有執行順序的話,先執行的命名排前。 

3.3 右鍵shift+鼠標右鍵,打開控制台。 

3.4 flyway migrate執行數據庫更新操作。

第一次執行flyway migrate可能會報以下錯誤 

  數據要先指定基線版本,先執行flyway baseline,這時候在對應的數據庫里頭創建一張版本更新表:schema_version然后再執行flyway migrate特別注意執行flyway baseline后腳本最低版本要從2開始。另外注意:由於flyway創建schema_version表時候,多了””,所以查詢數據庫要加””,例如:select t.* from "schema_version" t; 

3.5 flyway info輸出操作記錄信息。 

3.6 若執行腳本報錯,比如數據表id要求唯一,這時候執行flyway migrate會報錯。 

schema_version表里頭最新的一個腳本的success字段就會為0,代表失敗。

修改對應的腳本,flyway repair刪除錯誤記錄,然后再執行flyway migrate就可以了。

3.7 flyway baseline設定flyway基線。

在未執行flyway migrate之前,可以執行該命令,否則執行報錯。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM