web-dev-qa-db-ja.com

Flywayを使用して移行をロールバックする方法は?

MyBatisの移行は、各SQLファイルを2つのセクションに分割します。

  1. 1つのバージョンを前方に移行するためのもの
  2. 1つのバージョンを移行するための1つ

Flyway を使用してバージョンをどのようにロールバックしますか?

50
Gili

これは、Flyway 5.0以降でサポートされています。残念ながら、それは商用のみの機能です。

https://flywaydb.org/documentation/command/undo

8
user2248785

たとえば、ロールバック戦略が必要だと思います。パートナーは実稼働段階で失敗し、リリースにはパートナーの展開が不可欠です。

次のようなフライウェイSQLスクリプトに名前を付けることができます。
V <YourReleaseNumber> .000_ <description> .sql

今、あなたは去ることができます
V <YourReleaseNumber> .998_rollback.sqlロールバックの場合
and V <YourReleaseNumber> .999_reenroll.sqlを再登録します。

CI/CD環境では、展開ジョブの後にさらに2つのジョブ(手動でトリガーされる)が必要です。 1つはロールバック用で、フライウェイ移行を含むロールバックプロセスを実行します。再登録のためのその他。
flywayのターゲット構成に注意するだけです。
展開ジョブのターゲットは<YourReleaseNumber> .997である必要があります
ロールバックジョブ<YourReleaseNumber> .998の場合

新しいリリースを開始するときは、古いリリースのロールバック/再登録スクリプトを実行しないようにしてください。

十分にテストされた前に述べたように、バックアップと復元の戦略が推奨されるソリューションです。

(英語が下手です)

0
ndueck