😽
DB マイグレーションツールについて調べた
きっかけ
業務で Flyway を使用して運用を行っているが、ライブラリを Flyway8.x (Community Edition) 以上にアップグレードしようとしたところ、Aurora MySQL を8以上にしなければいけないことが判明した。
今すぐ Aurora MySQL をアップグレードするのは難しいため、Flyway の代替手段となり得る DBマイグレーションツールを調べることとなった。
参考
こちらを参考に調査した。
基準
だいたい以下を意識して確認した。
- ソースが公開されている
- よく利用されている (スター1000以上基準)
- MySQL をサポートしている
- 開発が盛んに行われている
- きちんとしたドキュメントが存在する
検証の結果、候補に残ったツールは以下。
ツール名 | ドライラン | 特定のバージョン実行コマンド | 既存 DB と同期コマンド |
---|---|---|---|
Liquibase | ○ | update-one-changeset (要ライセンス) | changelog-sync |
migrate | × | goto | force |
goose | × | up-to | なし? |
sqldef | ○ | - | --export オプションでスキーマ情報出力 |
まとめ
- 機能面だと Liquibase に軍配が上がるが、ライセンス問題が存在するので Flyway と同様の問題が将来的に起こる可能性がある
- Liquibase 以外のツールは機能がシンプルでどれも良さそうに感じたが、ツールによってはドライランができないものもあるので不安に感じる面もある
- sqldef はバージョン管理から解放されるので、一番良さそうに感じたがチームの方針次第といったところ
Discussion