Visszatérő migrációk a Flyway-vel

1. Bemutatkozás

Ebben a rövid bemutatóban megvizsgálunk néhány módot a migráció visszaállítására a Flyway segítségével.

2. Szimulálja a visszagörgetést migrációval

Ebben a szakaszban visszaállítjuk adatbázisunkat egy szabványos áttelepítési fájl segítségével.

Példáinkban a Flyway parancssori változatát fogjuk használni. Az alapelvek azonban ugyanúgy alkalmazhatók a többi formátumra is, mint például a core API, a Maven plugin stb.

2.1. Hozzon létre migrációt

Először adjunk hozzá egy újat könyv táblázat az adatbázisunkba. Ennek érdekében létrehozunk egy áttelepítési fájlt V1_0__create_book_table.sql:

táblakönyv létrehozása (id numerikus, cím varchar (128), szerző varchar (256), kényszer pk_book elsődleges kulcs (id));

Másodszor alkalmazzuk az átállást:

./flyway migrál

2.2. A visszagörgetés szimulálása

Aztán valamikor mondjuk, hogy meg kell fordítanunk az utolsó migrációt.

Az adatbázis visszaállítása a könyv tábla létrehozva, hozzunk létre migrációt V2_0__drop_table_book.sql:

cseppasztal könyv;

Ezután alkalmazzuk az áttelepítést:

./flyway migrál

Végül ellenőrizhetjük az összes migráció előzményeit a következők használatával:

./repülő információ

amely a következő kimenetet adja:

+ ----------- + --------- + ------------------- + ------ + --------------------- + --------- + | Kategória | Verzió | Leírás | Típus | Telepítve: | Állam | + ----------- + --------- + ------------------- + ------ + --------------------- + --------- + | Verziós | 1.0 | könyvtábla létrehozása | SQL | 2020-08-29 16:07:43 | Siker | | Verziós | 2,0 | cseppasztal könyv | SQL | 2020-08-29 16:08:15 | Siker | + ----------- + --------- + ------------------- + ------ + --------------------- + --------- +

Figyelje meg, hogy második migrációnk sikeresen lefutott.

Ami a Flyway-t illeti, a második migrációs fájl csak egy újabb szokásos migráció. Az adatbázis tényleges visszaállítása az előző verzióra teljes egészében SQL-en keresztül történik. Például esetünkben a táblázat eldobásának SQL-je ellentétes az első migrációval, amely létrehozza a táblát.

Ezzel a módszerrel az ellenőrzési nyomvonal nem mutatja, hogy a második migráció az elsőhöz kapcsolódik, mivel különböző verziószámuk van. Egy ilyen ellenőrzési nyomvonal megszerzéséhez a Flyway Undo-t kell használnunk.

3. A Flyway Undo használata

Először is fontos megjegyezni A Flyway Undo a Flyway kereskedelmi szolgáltatása, és nem érhető el a közösségi kiadásban. Ezért a Pro használatához vagy az Enterprise Edition-hez lesz szükségünk a funkció használatához.

3.1. Hozzon létre migrációs fájlokat

Először hozzunk létre egy áttelepítési fájlt V1_0__create_book_table.sql:

táblakönyv létrehozása (id numerikus, cím varchar (128), szerző varchar (256), kényszer pk_book elsődleges kulcs (id));

Másodsorban hozzuk létre a megfelelő visszavonási migrációs fájlt U1_0__create_book_table.sql:

cseppasztal könyv;

A visszavonás visszavonásakor vegye észre, hogy a fájlnév-előtag „U” -ot mutat a „V” szokásos áttelepítési előtaghoz képest. Továbbá az áttelepítési fájlok visszavonásában megírjuk az SQL-t, amely megfordítja a megfelelő migrációs fájl változásait. Esetünkben eldobjuk a normál migráció által létrehozott táblázatot.

3.2. Migrációk alkalmazása

Ezután ellenőrizzük az áttelepítések pillanatnyi állapotát:

./flyway -pro info

Ez a következő kimenetet adja:

+ ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + | Kategória | Verzió | Leírás | Típus | Telepítve: | Állam | Visszavonható | + ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + | Verziós | 1.0 | könyvtábla létrehozása | SQL | | Függőben | Igen | + ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + 

Figyelje meg az utolsó oszlopot, Visszavonható, ami azt jelzi, hogy a Flyway visszavonási fájlt észlelt, amely a normál migrációs fájlunkat kíséri.

Ezután alkalmazzuk migrációinkat:

./flyway migrál

Amikor befejeződik, az áttelepítések befejeződtek, és a sémánk új könyvtáblával rendelkezik:

 Kapcsolatok listája Séma | Név | Típus | Tulajdonos -------- + ----------------------- + ------- + -------- - nyilvános | könyv | táblázat | baeldung public | flyway_schema_history | táblázat | baeldung (2 sor) 

3.3. Visszatérés az utolsó migrációhoz

Végül vonjuk vissza az utolsó áttelepítést a parancssor segítségével:

./flyway -pro visszavonása

A parancs sikeres futtatása után újra ellenőrizhetjük az áttelepítések állapotát:

./flyway -pro info

amely a következő kimenetet adja:

+ ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- + | Kategória | Verzió | Leírás | Típus | Telepítve: | Állam | Visszavonható | + ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- + | Verziós | 1.0 | könyvtábla létrehozása | SQL | 2020-08-22 15:48:00 | Visszavonva | | | Visszavonás | 1.0 | könyvtábla létrehozása | UNDO_SQL | 2020-08-22 15:49:47 | Siker | | | Verziós | 1.0 | könyvtábla létrehozása | SQL | | Függőben | Igen | + ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- +

Figyelje meg, hogy a visszavonás hogyan sikerült, és az első áttérés ismét függőben van. Az első módszerrel ellentétben a Az ellenőrzési nyomvonal egyértelműen mutatja a visszagörgetett migrációkat.

Bár a Flyway Undo hasznos lehet, feltételezi, hogy az egész migráció sikeres volt. Például nem biztos, hogy a várakozásoknak megfelelően működik, ha az áttérés részben nem sikerül.

4. Következtetés

Ebben a rövid bemutatóban megvizsgáltuk az adatbázisunk visszaállítását egy szabványos áttelepítéssel. Megvizsgáltuk a migráció visszaállításának hivatalos módját is a Flyway Undo segítségével. Szokás szerint az oktatóanyaghoz kapcsolódó összes kód megtalálható a GitHubon.