Flyway自學之路-01(Flyway簡介)

1.1、Flyway是什麼

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

就目前而言,我們部署應用的流程大概是這樣的:

  1. 開發人員將應用程序打包、按順序彙總並整理數據庫升級腳本
  2. DBA拿到數據庫升級腳本檢查、備份、執行,以完成數據庫升級
  3. 應部署人員拿到應用部署包,備份、替換,以完成應用程序升級

引入Flyway之後的應用部署流程大概是這樣的:

  1. 開發人員將應用程序打包
  2. 應部署人員拿到應用部署包,備份、替換,以完成應用程序升(Flyway將自動執行升級/備份腳本)

1.2、Flyway如何工作

最簡單的理解方式是:簡單我們在一個空數據庫上部署集成了Flyway的應用:

è¿éåå¾çæè¿°

Flyway將在這個空數據中創建一張表,用於記錄migration的執行情況,表名稱默認爲:flyway_schema_histor,老版本的表名稱:schema_version

遷移

è¿éåå¾çæè¿°

緊接着,Flyway根據表中的記錄決定是否執行應用程序包中提供的migration

è¿éåå¾çæè¿°

最後將執行結果寫入flyway_schema_histor並校驗執行結果

è¿éåå¾çæè¿°

flyway_schema_histor打印有關所有遷移的詳細信息和狀態信息。

信息

 

信息可讓您知道自己的立場。一覽無餘,您將看到哪些遷移已被應用,哪些遷移仍在等待執行,何時執行以及它們是否成功。

下次版本迭代時,提供新的migration,會根據flyway_schema_histor的記錄執行新migration

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

驗證

對照可用遷移驗證已應用的遷移。

驗證

 

驗證可幫助您驗證應用於數據庫的遷移是否與本地可用的遷移匹配。

這對於檢測可能阻止您可靠地重新創建架構的意外更改非常有用。

 

基準線

對現有數據庫進行基準測試,不包括直到及包括baselineVersion的所有遷移。

基準線

 

基準是通過將特定數據庫作爲基準對Flyway引入現有數據庫。這將導致Migrate忽略直到基線版本(包括基線版本)的所有遷移。然後,將照常應用較新的遷移。

修理 

 

 

1.3、Migration


Flyway將每一個數據庫腳本稱之爲:migrations,flyway支持三種類型的migration:

  1. Versioned migrations:最常用的migration,可以簡單的理解爲數據庫升級腳本
  2. Undo migrations:數據庫版本回退腳本,需要Pro版本,忽略,而且使用過程存在較大風險,undo操作目前只能通過plugin或者command-line來執行
  3. Repeatable migrations:可重複執行的migration,例如create or replace腳本,當腳本checksums改變時會重新執行

SQL:簡單的SQL腳本文件,例如:

/* Single line comment */
CREATE TABLE test_user (
  name VARCHAR(25) NOT NULL,
  PRIMARY KEY(name)
);

/*
Multi-line
comment
*/
-- Placeholder
INSERT INTO ${tableName} (name) VALUES ('Mr. T');

1.4、所有的migration都需要遵守命名規範

è¿éåå¾çæè¿°

文件名由以下部分組成:

  • 前綴V用於版本控制(可配置), U用於撤消(可配置)和 R可重複遷移(可配置
  • 版本:帶點或下劃線的版本可根據需要分隔儘可能多的部分(不適用於可重複的遷移)
  • 分隔符:(__兩個下劃線)(可配置
  • 說明:下劃線或空格分隔單詞
  • 後綴.sql配置

可選的版本化SQL遷移也可以省略分隔符和描述。

確保版本號唯一,flyway按照版本號順序執行。repeatable沒有版本號,因爲repeatable migrations會在內容改變時重複執行。

1.5、官網文檔鏈接

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