Flywayは、データベースのスキーマ変更をバージョン管理するためのツールです。

ここでは、Flywayの基本的な使い方をステップごとに説明します。

データベースマイグレーションツール比較表

まず、他のDDLと比較してこのような感じかなと思いました。

特徴 / ツール MyBatis Migration Flyway 無料版 Flyway 有料版 Liquibase
複数環境のDB管理
バージョン管理
ロールバック機能 ×
価格 無料 無料 有料 無料(基本版)
カスタマーサポート × × ×
DBからファイル作成 × × ×
  • MyBatis Migrationのロールバックは何でもできるが、手動でロールバックコードをマイグレーションファイルに書いていかないといけないのがイマイチ。

今回はFlywayについて調べました。

MyBatis Migrationについてはこちらで調べてます。

Liquibaseについてはこちらで調べてます。

Flywayのダウンロード手順

1. 通常のダウンロード手順

  1. Flyway公式サイトにアクセスし、OSに応じたバージョンをダウンロード。
  2. ダウンロード後、ZIPファイルを解凍し、適切なフォルダーに配置。
  3. FlywayフォルダーをシステムのPATHに追加。
  4. コマンドラインでflyway -vを実行し、インストールを確認。

2. Dockerを使ったダウンロード手順

  1. Docker公式サイトからDockerをインストール。
  2. 以下のコマンドでFlywayのDockerイメージを取得:
    docker pull flyway/flyway
  3. Flywayを実行する例:
    docker run --rm -v $(pwd)/sql:/flyway/sql flyway/flyway -url=jdbc:mysql://localhost:3306/mydb -user=myuser -password=mypassword migrate
  4. 設定ファイルやSQLをコンテナにマウントして実行。

Flywayの導入手順とフォルダー構成

Flywayを使用してデータベースマイグレーションを管理する際の、フォルダー構成や環境ごとの設定方法について説明します。

1. フォルダー構成

以下は推奨されるフォルダー構成です。

    project-root/
    ├── flyway/
    │   ├── conf/
    │   │   ├── flyway-dev.conf
    │   │   ├── flyway-prod.conf
    │   ├── sql/
    │   │   ├── V1__Create_users_table.sql
    │   │   ├── V2__Add_email_to_users.sql
    └── build/

2. 環境ごとの設定ファイル

各環境に応じて接続情報を設定するために、環境ごとに設定ファイルを用意します。

開発環境用設定ファイル

    flyway.url=jdbc:mysql://localhost:3306/dev_db
    flyway.user=dev_user
    flyway.password=dev_password
    flyway.locations=filesystem:flyway/sql

本番環境用設定ファイル

    flyway.url=jdbc:mysql://prod-db-server:3306/prod_db
    flyway.user=prod_user
    flyway.password=prod_password
    flyway.locations=filesystem:flyway/sql

3. マイグレーションの実行

環境ごとの設定ファイルを指定してFlywayを実行します。

開発環境でのマイグレーション

    flyway -configFiles=flyway/conf/flyway-dev.conf migrate

本番環境でのマイグレーション

    flyway -configFiles=flyway/conf/flyway-prod.conf migrate