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.