db スクリプトの継続的統合: flyway がデータベースを作成、管理、バージョン管理します
フライウェイとは何ですか
Flyway は、開発者がデータベースのバージョン管理をアプリケーションに統合するのに役立つオープンソースのデータベース移行ツールです。シンプルな SQL スクリプトを使用してデータベースのバージョンとアップグレードを管理します。Flyway は、さまざまな主流データベース (MySQL、PostgreSQL、Oracle、SQL Server など) をサポートしているため、異なるデータベース間の移行がより簡単かつ柔軟になります。
Flyway は、構成よりも規約の原則に基づいており、データベースの作成、管理、バージョン管理をより予測可能かつ再現可能にする一連の命名規約と組織構造を提供します。Flyway の核となるアイデアはバージョン管理データベースであり、各バージョンは SQL スクリプトによって管理され、開発者がデータベース構造の安定性と一貫性をより適切に維持できるようになります。
Flyway は、開発者がプロジェクト内の他のツール (Maven、Gradle、Spring Boot など) と簡単に統合できるようにするさまざまな統合方法も提供します。同時に、Flyway はコマンドライン、Java アプリケーション、Web アプリケーションなどの複数の展開方法もサポートしているため、開発者は柔軟に展開および拡張できます。
つまり、Flyway は、強力で使いやすく、柔軟でスケーラブルなオープンソース データベースのバージョン管理ツールであり、開発者がデータベースの構造とデータをより適切に管理し、データベースの変更をより予測可能かつ保守しやすくするのに役立ちます。
springboot アプリケーションの起動統合フライウェイ
pom が flyway 依存パッケージを導入
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>7.9.1</version>
</dependency>
flywayで実行したSQLが格納されるディレクトリ
resources
dbflyway
my-application-name2.30.0
my-application-name2.30.0_01__filename.sql
my-application-name2.31.0
my-application-name2.31.0_01__filename.sql
フライウェイ構成 Bean
org.flywaydb.core.api.configuration.ClassicConfiguration
ClassicConfiguration定义了可以配置的参数
シナリオ 1: 以前は個別に実行されていましたが、今回はアプリケーションの起動実行に移行され、以前の実行は無視する必要があります。指定したバージョンから実行を開始する
#yaml的配置应该为:
spring:
application:
name: my-application-name
flyway:
# 启动flyway
enabled: true
#
schemas: public
# sql文件前缀名
sql-migration-prefix: my-application-name
# baselineOnMigrate 和baselineVersion配置从指定版本开始执行
baselineOnMigrate: true
# 执行的版本
baselineVersion: 2.31.0
ignoreIgnoredMigrations: true
# flyway执行的记录,
table: flyway_schema_history
# flyway执行的sql目录
locations: classpath:dbflyway,classpath:sql/fix,classpath:sql/poc
flyway_schema_history テーブルの構造とフィールドの説明
flyway_schema_history テーブルは私たちが作成する必要はありません。flayway の開始時に自動的に作成されます。
インストール済みランク | バージョン | 説明 | タイプ | 脚本 | チェックサム | インストール済み | インストール済み | 実行時間 | 成功 |
---|---|---|---|---|---|---|---|---|---|
主キーのインクリメント実行ID | バージョン/ファイル名のプレフィックス | ファイル名のバージョンを除いた部分を取得します | レコード タイプ ベースラインまたは実行された SQL | 実行名のフルパス | ファイルのハッシュ値 | ||||
1 | 2.31.0 | << フライウェイベースライン >> | ベースライン | << フライウェイベースライン >> | ヌル | 2023-05-24 14:35:28.000767 | 0 | 真実 | |
2 | 2.31.0.01 | ssdlcオリジン保存を作成 | SQL | 私のアプリケーション名2.31.0/私のアプリケーション名2.31.0_01__create_business_table.sql | -588013804 | データベースユーザー | 2023-05-24 14:35:28.078776 | 44 | 真実 |
- すでに実行されているファイルには注意してください。再度変更しないでください。変更すると、計算されたハッシュが変更され、チェックサム チェックが失敗します。
- 毎回ベースラインから実行を開始し、ckechsum が一貫している場合はスキップします
上記の 2 番目のポイントでは、以前は flyway が別のマシンで実行されていたシナリオがありましたが、コストを削減し、効率を高め、マシンを減らし、アプリケーションのデプロイメントをより一貫性のあるものにするために、flyway を変更して実行する必要があります。アプリケーションの起動時。上記の構成に従って yaml で構成し、最新バージョンであるベースライン バージョンを指定する必要があります。SQL ストレージ ディレクトリと以前の反復プロセスを変更したため、フライウェイ実行レコード テーブルは新しいテーブルで実行する必要があります標準化されていないため、flyway を指定して新しいテーブルを作成します。新しいベースライン バージョンを生成する
create table flyway_schema_history1
(
installed_rank integer not null
constraint flyway_schema_history1_pk
primary key,
version varchar(50),
description varchar(200) not null,
type varchar(20) not null,
script varchar(1000) not null,
checksum integer,
installed_by varchar(100) not null,
installed_on timestamp default now() not null,
execution_time integer not null,
success boolean not null
);
alter table flyway_schema_history1
owner to dev_root;
create index flyway_schema_history1_s_idx
on flyway_schema_history1 (success);