Vrátenie migrácií pomocou Flyway

1. Úvod

V tomto krátkom tutoriáli preskúmame niekoľko spôsobov, ako vrátiť migráciu pomocou Flyway.

2. Simulujte vrátenie pomocou migrácie

V tejto časti vrátime späť našu databázu pomocou štandardného migračného súboru.

V našich príkladoch použijeme verziu Flyway z príkazového riadku. Základné princípy sú však rovnako použiteľné aj pre ďalšie formáty, ako napríklad základné API, plugin Maven atď.

2.1. Vytvorte migráciu

Najskôr pridajme nové kniha tabuľky do našej databázy. Za týmto účelom vytvoríme migračný súbor s názvom V1_0__create_book_table.sql:

vytvoriť knihu tabuľky (id číselné, názov varchar (128), autor varchar (256), obmedzenie primárny kľúč pk_book (id));

Po druhé, použijeme migráciu:

./flyway migrovať

2.2. Simulujte vrátenie

Potom v určitom okamihu povedzme, že musíme zvrátiť poslednú migráciu.

S cieľom obnoviť databázu pred kniha bola vytvorená tabuľka, vytvorme migráciu s názvom V2_0__drop_table_book.sql:

kniha prepadacieho stola;

Ďalej použijeme migráciu:

./flyway migrovať

Na záver môžeme skontrolovať históriu všetkých migrácií pomocou:

./letové informácie

čo nám dáva nasledujúci výstup:

+ ----------- + --------- + ------------------- + ------ + --------------------- + --------- + | Kategória | Verzia | Popis | Typ | Inštalované dňa | Štát | + ----------- + --------- + ------------------- + ------ + --------------------- + --------- + | Verzia 1,0 | vytvoriť tabuľku kníh SQL | 2020-08-29 16:07:43 | Úspech | | Verzia 2,0 | kniha prebaľovacích stolov | SQL | 2020-08-29 16:08:15 | Úspech | + ----------- + --------- + ------------------- + ------ + --------------------- + --------- +

Všimnite si, že naša druhá migrácia prebehla úspešne.

Pokiaľ ide o Flyway, druhý migračný súbor je iba ďalšou štandardnou migráciou. Samotné obnovenie databázy na predchádzajúcu verziu sa vykonáva výhradne prostredníctvom SQL. Napríklad v našom prípade je SQL zrušenia tabuľky opakom prvej migrácie, ktorá tabuľku vytvorí.

Pomocou tejto metódy audit trail nám neukazuje, že druhá migrácia súvisí s prvou, pretože majú rôzne čísla verzií. Na získanie takéhoto záznamu o audite je potrebné použiť program Flyway Undo.

3. Používanie Flyway Undo

Najskôr je dôležité si to uvedomiť Flyway Undo je komerčná funkcia Flyway a nie je k dispozícii v komunitnej edícii. Aby sme mohli používať túto funkciu, budeme potrebovať buď Pro Edition, alebo Enterprise Edition.

3.1. Vytvorte migračné súbory

Najskôr si vytvorme migračný súbor s názvom V1_0__create_book_table.sql:

vytvoriť knihu tabuľky (id číselné, názov varchar (128), autor varchar (256), obmedzenie primárny kľúč pk_book (id));

Po druhé, vytvorme zodpovedajúci migračný súbor späť U1_0__create_book_table.sql:

kniha prepadacieho stola;

Pri našej migrácii vrátenej späť si všimnite, ako je predpona názvu súboru „U“ v porovnaní s bežnou predponou migrácie „V“. V našich súboroch na vrátenie migrácie tiež napíšeme SQL, ktoré vráti zmeny príslušného migračného súboru. V našom prípade rušíme tabuľku, ktorá je vytvorená normálnou migráciou.

3.2. Použiť migrácie

Ďalej skontrolujeme aktuálny stav migrácií:

./flyway -pro info

To nám dáva nasledujúci výstup:

+ ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + | Kategória | Verzia | Popis | Typ | Inštalované dňa | Štát | Neodvolateľné | + ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + | Verzia 1,0 | vytvoriť tabuľku kníh SQL | | Nespracované | Áno | + ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + 

Všimnite si posledný stĺpec, Nedá sa vrátiť, čo znamená, že spoločnosť Flyway zistila späť migračný súbor, ktorý sprevádza náš normálny migračný súbor.

Ďalej použijeme naše migrácie:

./flyway migrovať

Po dokončení sú naše migrácie dokončené a naša schéma obsahuje novú tabuľku kníh:

 Zoznam vzťahov Schéma Meno | Typ | Majiteľ -------- + ----------------------- + ------- + -------- - verejné | kniha | tabuľka | verejný baeldung | flyway_schema_history | tabuľka | baeldung (2 riadky) 

3.3. Vrátiť späť poslednú migráciu

Nakoniec vráťme poslednú migráciu pomocou príkazového riadku:

./flyway -pro vrátiť späť

Po úspešnom spustení príkazu môžeme znova skontrolovať stav migrácií:

./flyway -pro info

čo nám dáva nasledujúci výstup:

+ ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- + | Kategória | Verzia | Popis | Typ | Inštalované dňa | Štát | Neodvolateľné | + ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- + | Verzia 1,0 | vytvoriť tabuľku kníh SQL | 2020-08-22 15:48:00 | Vrátené späť | | Späť | 1,0 | vytvoriť tabuľku kníh UNDO_SQL | 2020-08-22 15:49:47 | Úspech | | | Verzia 1,0 | vytvoriť tabuľku kníh SQL | | Nespracované | Áno | + ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- +

Všimnite si, že vrátenie bolo úspešné a prvá migrácia je späť na nespracovanie. Na rozdiel od prvej metódy tiež audit trail jasne ukazuje migrácie, ktoré boli vrátené späť.

Aj keď program Flyway Undo môže byť užitočný, predpokladá, že celá migrácia prebehla úspešne. Napríklad nemusí fungovať podľa očakávania, ak migrácia čiastočne zlyhá.

4. Záver

V tomto krátkom tutoriáli sme sa pozreli na obnovenie našej databázy pomocou štandardnej migrácie. Pozreli sme sa tiež na oficiálny spôsob vrátenia migrácií pomocou nástroja Flyway Undo. Ako obvykle, celý náš kód, ktorý sa týka tohto tutoriálu, nájdete na GitHub.