😽

DB マイグレーションツールについて調べた

2023/05/19に公開

きっかけ

業務で Flyway を使用して運用を行っているが、ライブラリを Flyway8.x (Community Edition) 以上にアップグレードしようとしたところ、Aurora MySQL を8以上にしなければいけないことが判明した。
今すぐ Aurora MySQL をアップグレードするのは難しいため、Flyway の代替手段となり得る DBマイグレーションツールを調べることとなった。

参考

こちらを参考に調査した。
https://qiita.com/cocoa-maemae/items/d55c7b53f95425efdce8#dbマイグレーションツール一覧

基準

だいたい以下を意識して確認した。

  • ソースが公開されている
  • よく利用されている (スター1000以上基準)
  • MySQL をサポートしている
  • 開発が盛んに行われている
  • きちんとしたドキュメントが存在する

検証の結果、候補に残ったツールは以下。

https://github.com/htnk128/db-migration-test

ツール名 ドライラン 特定のバージョン実行コマンド 既存 DB と同期コマンド
Liquibase update-one-changeset (要ライセンス) changelog-sync
migrate × goto force
goose × up-to なし?
sqldef - --export オプションでスキーマ情報出力

まとめ

  • 機能面だと Liquibase に軍配が上がるが、ライセンス問題が存在するので Flyway と同様の問題が将来的に起こる可能性がある
  • Liquibase 以外のツールは機能がシンプルでどれも良さそうに感じたが、ツールによってはドライランができないものもあるので不安に感じる面もある
  • sqldef はバージョン管理から解放されるので、一番良さそうに感じたがチームの方針次第といったところ

Discussion