העברה מ-MySQL ל-Spanner

בדף הזה מוסבר איך להעביר את מסד הנתונים של עיבוד עסקאות אונליין (OLTP) מ-MySQL אל Spanner. התהליך של מעבר ל-Spanner עשוי להשתנות בהתאם לגורמים כמו גודל הנתונים, דרישות לגבי זמן השבתה, מורכבות של קוד האפליקציה, סכימת שרדינג, פונקציות בהתאמה אישית ואסטרטגיות של מעבר לגיבוי ושל שכפול.

ההעברה ל-Spanner מחולקת לשלבים הבאים:

  1. הערכת ההעברה.
  2. להעביר את הסכימה ולתרגם שאילתות SQL.
  3. העברת האפליקציה לשימוש ב-Spanner בנוסף ל-MySQL.
  4. טוענים נתונים לדוגמה ומבצעים אופטימיזציה של הביצועים.
  5. העברת הנתונים.
  6. מאמתים את המיגרציה.
  7. הגדרת מנגנונים למעבר חד למערכת אחרת (cutover) ולחזרה למצב ראשוני.

הערכת ההעברה

כדי להעריך את ההעברה ממסד נתונים של MySQL במקור ל-Spanner, צריך לבדוק את הצרכים העסקיים, הטכניים, התפעוליים והפיננסיים שלכם. מידע נוסף זמין במאמר בנושא הערכת ההעברה.

העברת הסכימה

אתם ממירים את הסכימה הקיימת לסכימה של Spanner באמצעות כלי ההעברה של Spanner.

מידע נוסף זמין במאמר סקירה כללית על העברת סכימה מ-MySQL.

העברת האפליקציה לשימוש ב-Spanner

‫Spanner מספק קבוצה של ספריות לקוח בשפות שונות, ואפשרות לקרוא ולכתוב נתונים באמצעות קריאות ל-API ספציפיות ל-Spanner, וגם באמצעות שאילתות SQL ופקודות Data Modification Language ‏ (DML). יכול להיות ששימוש בקריאות ל-API יהיה מהיר יותר עבור חלק מהשאילתות, כמו קריאות ישירות של שורות לפי מפתח, כי אין צורך לתרגם את הצהרת ה-SQL.

‫Spanner מספק JDBC driver לאפליקציות Java.

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

רמת הבידוד שמוגדרת כברירת מחדל בעסקאות ב-Spanner היא בידוד ניתן לסידור, שמבטיח עקביות חיצונית של הנתונים. ‫Spanner מציע גם בידוד קריאה חוזרת. מומלץ להגדיר את רמת הבידוד כקריאה חוזרת, ואת בקרת בו-זמניות פסימית כחלק מתהליך העברת האפליקציה, כדי שהסמנטיקה של הטרנזקציות ב-Spanner תתאים באופן הדוק לסמנטיקה של טרנזקציות ברירת המחדל ב-MySQL. הוראות להגדרת רמת הבידוד ובקרת הגישה בו-זמנית באפליקציה מופיעות במאמרים שימוש ברמת הבידוד 'קריאה חוזרת' והגדרת בקרת גישה בו-זמנית.

‫Spanner מציע עסקאות קריאה או קריאה וכתיבה, ועסקאות קריאה בלבד. בנוסף, אפשר להחיל על טרנזקציות קריאה גבולות של חותמות זמן, שבהם קוראים גרסה עקבית של הנתונים באחת מהדרכים הבאות:

  • בשעה מדויקת בעבר (עד שעה לפני כן).
  • בעתיד (הקריאה תיחסם עד שהזמן הזה יגיע).
  • עם מידה מקובלת של נתונים לא עדכניים, שתחזיר תצוגה עקבית עד לנקודת זמן מסוימת בעבר, בלי שתצטרכו לבדוק אם נתונים מאוחרים יותר זמינים בעותק משוכפל אחר. הפעולה הזו יכולה לשפר את הביצועים, אבל עלולה לגרום לנתונים לא עדכניים.

טעינת נתונים לדוגמה ב-Spanner

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

אתם יכולים להשתמש בתהליך העבודה של BigQuery reverse ETL וב-Google Cloud CLI כדי לטעון כמות קטנה של נתונים בפורמט קובץ CSV ל-Spanner.

מידע נוסף זמין במאמר בנושא טעינת נתוני דוגמה.

כדי להעביר את הנתונים מ-MySQL ל-Spanner, אפשר גם לייצא את מסד הנתונים של MySQL לפורמט קובץ נייד – למשל, XML – ואז לייבא את הנתונים האלה ל-Spanner באמצעות Dataflow.

העברת נתונים אל Spanner

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

מידע נוסף זמין במאמר העברת נתונים בזמן אמת מ-MySQL.

אימות העברת הנתונים

בזמן שנתונים מוזרמים למסד הנתונים של Spanner, אפשר להריץ השוואה בין הנתונים ב-Spanner לבין הנתונים ב-MySQL באופן תקופתי כדי לוודא שהנתונים עקביים. כדי לוודא שהנתונים עקביים, אפשר לשלוח שאילתות לשני מקורות הנתונים ולהשוות את התוצאות.

אפשר להשתמש ב-Dataflow כדי לבצע השוואה מפורטת של מערכי נתונים גדולים באמצעות join transform. הטרנספורמציה הזו מקבלת 2 מערכי נתונים עם מפתחות, ומתאימה את הערכים לפי המפתח. אחר כך אפשר להשוות בין הערכים התואמים כדי לבדוק אם הם שווים. אתם יכולים להפעיל את האימות הזה באופן קבוע עד שרמת העקביות תתאים לדרישות העסק שלכם.

מידע נוסף זמין במאמר אימות של העברת הנתונים.

הגדרת מנגנונים למעבר ולחזרה למצב ראשוני

אפשר להגדיר מעבר חד למערכת אחרת (cutover) וגיבוי ל-MySQL באמצעות שכפול הפוך. מעבר חד למערכת אחרת (cutover) וחזרה למצב הקודם פירושם שיש לכם תוכנית מגירה לחזרה למסד הנתונים של MySQL המקורי אם נתקלתם בבעיות ב-Spanner.

רפליקה הפוכה שימושית כשנתקלים בבעיות בלתי צפויות ב-Spanner וצריך לחזור למסד הנתונים המקורי של MySQL עם הפרעה מינימלית לשירות. שכפול הפוך מאפשר מעבר חזרה על ידי שכפול נתונים שנכתבו ב-Spanner בחזרה למסד הנתונים של MySQL.

תהליך השכפול ההפוך כולל את השלבים הבאים, שמבוצעים על ידי Spanner to SourceDB תבנית Dataflow:

  1. קריאת שינויים מ-Spanner באמצעות Spanner change streams.

  2. לסנן את השינויים שהועברו קדימה.

  3. המרת נתונים מ-Spanner כך שיהיו תואמים לסכימה של מסד הנתונים של המקור.

  4. בודקים אם מסד הנתונים המקורי כבר מכיל נתונים עדכניים יותר עבור המפתח הראשי שצוין.

  5. כותבים את הנתונים למסד הנתונים של המקור.

המאמרים הבאים