db スクリプトの継続的統合: flyway がデータベースを作成、管理、バージョン管理します

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 真実
  1. すでに実行されているファイルには注意してください。再度変更しないでください。変更すると、計算されたハッシュが変更され、チェックサム チェックが失敗します。
  2. 毎回ベースラインから実行を開始し、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);

おすすめ

転載: blog.csdn.net/u013565163/article/details/130848506