הגירת הגירה עם מעוף

1. הקדמה

במדריך קצר זה נחקור כמה דרכים להחזיר הגירה באמצעות Flyway.

2. לדמות החזרה עם הגירה

בחלק זה, נחזיר את מסד הנתונים שלנו באמצעות קובץ הגירה רגיל.

בדוגמאות שלנו נשתמש בגרסת שורת הפקודה של Flyway. עם זאת, עקרונות הליבה חלים באותה מידה על הפורמטים האחרים, כגון ממשק ה- API, תוסף Maven וכו '.

2.1. צור הגירה

ראשית, בואו להוסיף חדש סֵפֶר טבלה למסד הנתונים שלנו. על מנת לעשות זאת, ניצור קובץ העברה בשם V1_0__create_book_table.sql:

צור ספר טבלה (מספר מספרי מזהה, כותרת varchar (128), מחבר varchar (256), אילוץ pk_book מפתח ראשי (id));

שנית, בואו נשתמש בהגירה:

./flyway נודדים

2.2. לדמות החזרה

ואז, בשלב מסוים, אומרים שאנחנו צריכים להפוך את ההגירה האחרונה.

על מנת לשחזר את מסד הנתונים לפני סֵפֶר הטבלה נוצרה, בואו ניצור הגירה שנקראת V2_0__drop_table_book.sql:

ספר שולחן זרוק;

לאחר מכן, בוא נשתמש בהעברה:

./flyway נודדים

לבסוף, אנו יכולים לבדוק את ההיסטוריה של כל ההגירות באמצעות:

מידע ./flyway

שנותן לנו את התפוקה הבאה:

+ ----------- + --------- + ------------------- + ------ + --------------------- + --------- + | קטגוריה | גרסה | תיאור | סוג | הותקן ב- | מדינה | + ----------- + --------- + ------------------- + ------ + --------------------- + --------- + | גרסה | 1.0 | צור שולחן ספרים SQL | 2020-08-29 16:07:43 | הצלחה | | גרסה | 2.0 | ספר שולחן זרוק | SQL | 2020-08-29 16:08:15 | הצלחה | + ----------- + --------- + ------------------- + ------ + --------------------- + --------- +

שימו לב שההגירה השנייה שלנו רצה בהצלחה.

מבחינת Flyway, קובץ ההגירה השני הוא רק עוד הגירה סטנדרטית. השחזור בפועל של מסד הנתונים לגרסה הקודמת נעשה לחלוטין באמצעות SQL. לדוגמא, במקרה שלנו, ה- SQL של ​​הטלת הטבלה הוא ההפך מההעברה הראשונה, שיוצרת את הטבלה.

באמצעות שיטה זו, שביל הביקורת לא מראה לנו שההגירה השנייה קשורה לראשונה, מכיוון שיש להם מספרי גרסאות שונים. על מנת לקבל מסלול ביקורת כזה, עלינו להשתמש ב- Flyway Undo.

3. שימוש ב- Flyway Undo

ראשית, חשוב לציין זאת Flyway Undo הוא מאפיין מסחרי של Flyway ואינו זמין במהדורת הקהילה. לכן, נצטרך מהדורת Pro או מהדורת Enterprise כדי להשתמש בתכונה זו.

3.1. צור קבצי הגירה

ראשית, בואו ניצור קובץ העברה בשם V1_0__create_book_table.sql:

צור ספר טבלה (מספר מספרי מזהה, כותרת varchar (128), מחבר varchar (256), אילוץ pk_book מפתח ראשי (id));

שנית, בואו ניצור את קובץ ההעברה המתאים U1_0__create_book_table.sql:

ספר שולחן זרוק;

בהגירה שלנו לבטל, שימו לב כיצד קידומת שם הקובץ היא 'U' בהשוואה לקידומת ההעברה הרגילה של 'V'. כמו כן, בקבצי ההעברה שלנו, אנו כותבים את ה- SQL המהפך את השינויים של קובץ ההעברה המתאים. במקרה שלנו, אנו מפילים את הטבלה שנוצרה בעקבות ההגירה הרגילה.

3.2. החל הגירות

לאחר מכן, בואו נבדוק את המצב הנוכחי של ההגירות:

./flyway - מידע מידע

זה נותן לנו את התפוקה הבאה:

+ ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + | קטגוריה | גרסה | תיאור | סוג | הותקן ב- | מדינה | ניתן לבטל | + ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + | גרסה | 1.0 | צור שולחן ספרים SQL | | בהמתנה | כן | + ----------- + --------- + ------------------- + ------ + -------------- + --------- + ---------- + 

שימו לב לעמודה האחרונה, לא ניתן לביטול, מה שמציין כי Flyway זיהה קובץ העברה המלווה את קובץ ההעברה הרגיל שלנו.

לאחר מכן, בואו נשתמש בהעברות שלנו:

./ flyway נודדים

כאשר הוא מסתיים, ההעברות שלנו הושלמו, ולסכמה שלנו יש טבלת ספרים חדשה:

 רשימת יחסי סכמה | שם | סוג | בעלים -------- + ----------------------- + ------- + -------- - ציבורי | ספר | שולחן | ציבורי baeldung | מעוף_סכמה_היסטוריה | שולחן | baeldung (2 שורות) 

3.3. החזר את ההגירה האחרונה

לבסוף, בואו לבטל את ההעברה האחרונה באמצעות שורת הפקודה:

./flyway -pro בטל

לאחר שהפקודה רצה בהצלחה, נוכל לבדוק שוב את סטטוס ההעברות:

./flyway - מידע מידע

שנותן לנו את התפוקה הבאה:

+ ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- + | קטגוריה | גרסה | תיאור | סוג | הותקן ב- | מדינה | ניתן לבטל | + ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- + | גרסה | 1.0 | צור שולחן ספרים SQL | 2020-08-22 15:48:00 | בוטל | | | בטל | 1.0 | צור שולחן ספרים UNDO_SQL | 2020-08-22 15:49:47 | הצלחה | | | גרסה | 1.0 | צור שולחן ספרים SQL | | בהמתנה | כן | + ----------- + --------- + ------------------- + ------- --- + --------------------- + --------- + ---------- +

שימו לב כיצד הביטול הצליח, וההעברה הראשונה חזרה להמתנה. כמו כן, בניגוד לשיטה הראשונה, ה שביל הביקורת מראה בבירור את ההגירות שהוחזרו לאחור.

למרות ש- Flyway Undo יכול להיות שימושי, הוא מניח שההגירה כולה הצליחה. לדוגמה, יתכן שזה לא יעבוד כצפוי אם העברה נכשלת בהמשך הדרך.

4. מסקנה

במדריך קצר זה בדקנו את שחזור מסד הנתונים שלנו באמצעות הגירה סטנדרטית. בדקנו גם את הדרך הרשמית להחזיר נדידות באמצעות Flyway Undo. כרגיל, כל הקוד שלנו המתייחס למדריך זה נמצא ב- GitHub.