בדף הזה מוסבר איך להעביר את מסד הנתונים של עיבוד עסקאות אונליין (OLTP) מ-MySQL אל Spanner. תהליך המעבר ל-Spanner עשוי להשתנות בהתאם לגורמים כמו גודל הנתונים, דרישות זמן ההשבתה, מורכבות קוד האפליקציה, סכימת השארדינג, פונקציות מותאמות אישית ואסטרטגיות של מעבר לגיבוי ושכפול.
ההעברה של Spanner מחולקת לשלבים הבאים:
- הערכת ההעברה.
- להעביר את הסכימה ולתרגם שאילתות SQL.
- העברת האפליקציה לשימוש ב-Spanner בנוסף ל-MySQL.
- טוענים נתונים לדוגמה ומבצעים אופטימיזציה של הביצועים.
- מעבירים את הנתונים.
- מאמתים את המיגרציה.
- הגדרת מנגנונים למעבר חד למערכת אחרת (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 לפני שתבצעו העברת נתונים מלאה, כדי לבדוק סכימות, שאילתות ואת האפליקציה שלכם.
אפשר להשתמש בתהליך העבודה של 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) ולחזרה למצב ראשוני
אפשר להגדיר מעבר חד למערכת אחרת (cutover) וגיבוי חלופי ל-MySQL באמצעות רפליקציה הפוכה. מעבר חד למערכת אחרת (cutover) וחזרה למערכת קודמת אומר שיש לכם תוכנית מגירה לחזור לגרסה קודמת של מסד הנתונים של MySQL המקורי אם נתקלתם בבעיות ב-Spanner.
רפליקה הפוכה שימושית כשנתקלים בבעיות בלתי צפויות ב-Spanner וצריך לחזור למסד הנתונים המקורי של MySQL עם הפרעה מינימלית לשירות. שכפול הפוך מאפשר מעבר חזרה על ידי שכפול נתונים שנכתבו ב-Spanner בחזרה במסד הנתונים של MySQL.
תהליך השכפול ההפוך כולל את השלבים הבאים, שמבוצעים על ידי תבנית Dataflow Spanner to SourceDB:
קריאת שינויים מ-Spanner באמצעות Spanner change streams.
לסנן את השינויים שהועברו קדימה.
המרת נתונים מ-Spanner כך שיהיו תואמים לסכימה של מסד הנתונים של המקור.
צריך לוודא שמסד הנתונים של המקור כבר מכיל נתונים עדכניים יותר עבור המפתח הראשי שצוין.
כותבים את הנתונים למסד הנתונים של המקור.
המאמרים הבאים
- שיטות מומלצות לעיצוב סכימה
- אופטימיזציה של סכימת Spanner.
- במקרים מורכבים יותר, אפשר להשתמש ב-Dataflow.