העברת מכונה

בדף הזה מוסבר איך להעביר מופע ב-Spanner.

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

אפשר גם להעביר את המכונה מההגדרה של מכונת המקור להגדרה של מכונה בהתאמה אישית (לדוגמה, הגדרת בסיס nam3 עם העתק לקריאה בלבד us-west2). אי אפשר לעדכן את הטופולוגיה של הגדרות קיימות של מכונות, ולכן צריך קודם ליצור הגדרה חדשה של מכונה בהתאמה אישית עם הטופולוגיה הרצויה. אחרי שיוצרים את ההגדרה החדשה של המכונה בהתאמה אישית, אפשר להעביר את המכונה מההגדרה של מכונת המקור להגדרה החדשה של המכונה בהתאמה אישית.

למה כדאי להעביר את מכונת Spanner?

היתרונות של העברת המופע כוללים:

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

תמחור

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

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

מגבלות

  • כדי להעביר את המופע, הוא צריך לכלול לפחות 1 צומת (1,000 יחידות עיבוד).
  • אי אפשר להעביר את המופע בין פרויקטים ובין חשבונות. Google Cloud
  • אי אפשר להעביר מכונה שמשתמשת במהדורת Standard ישירות מהגדרת מכונה אזורית להגדרת מכונה בשני אזורים או במספר אזורים. קודם צריך לשדרג את המהדורה של המכונה למהדורת Enterprise Plus, ואז להעביר את המכונה.
  • אם יש לכם בקשות פעילות שמשתמשות בנקודת קצה אזורית של שירות בכל אחד ממשאבי המופע, העברת המופע תשפיע על כל הבקשות שמשתמשות בנקודת הקצה האזורית, כי האכיפה האזורית חוסמת גישה למופעים חוצי אזורים. בקשות שמשתמשות בנקודת קצה גלובלית לא מושפעות.
  • גיבויים של Spanner ספציפיים להגדרת מופע ולא נכללים כשמעבירים מופע. מידע נוסף מופיע במאמר בנושא גיבויים.
  • ממשקי ה-API הבאים מושבתים במהלך העברת מופע:
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl (מושבת אם default_leader מצוין בבקשה).
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • אם במסד נתונים יש מוביל ברירת מחדל שהשתנה, הבחירה נשמרת אם היא מציינת אזור לקריאה ולכתיבה בהגדרת מופע היעד, וההגדרה הזו היא רב-אזורית. אם הגדרת היעד היא אזורית, או אם היא לא כוללת את האזור בעל השם לקריאה ולכתיבה, ברירת המחדל של בחירת הלידר מבוטלת.
  • העברה של מופע משנה את מאפיין ההגדרה של המופע. אם אתם מנהלים את משאבי Spanner באמצעות אוטומציה, חשוב להכין את עצמכם לכל אי-התאמה שעלולה לקרות ולטפל בה.
    • לדוגמה, אם אתם משתמשים ב-Terraform כדי לנהל את מסדי הנתונים ואת המופעים של Spanner, ואתם מפעילים את terraform apply --auto-approve כדי שהמשאבים יישארו מסונכרנים, כל המופעים ומשאבי הצאצא יימחקו כשנעביר את המופע. כדי למנוע מחיקה ואובדן נתונים, צריך לעדכן את ההגדרות בהתאם. מידע נוסף על הפקודה apply זמין במאמר בנושא אפשרויות של Terraform Apply.
  • במהלך ההעברה של המופע, יכול להיות שהמדדים והתרשימים של Spanner Monitoring יציגו נתונים גם בהגדרות של מופע המקור וגם בהגדרות של מופע היעד, או שהם ישקפו רק את הביצועים בהגדרה של מופע אחד.
  • אם הגדרתם את כלי Autoscaler בקוד פתוח, אין צורך להשבית אותו. הפעולה נכשלת כי InstanceAdmin.UpdateInstance (שמשמשת לשינויים ביחידת העיבוד ובצומת) מושבתת.
  • אי אפשר להעביר מופע אם התכונה Spanner managed autoscaler מופעלת בו. כדי להעביר את המכונה, צריך להשבית את קנה המידה האוטומטי המנוהל, להעביר את המכונה ואז להפעיל מחדש את קנה המידה האוטומטי המנוהל.
    • בנוסף, אם אתם משתמשים בהתאמה אוטומטית לעומס, אתם צריכים להקצות מספיק צמתים לשימוש שיא במעבד בהתאם להמלצות המקסימליות שצוינו, ואז להשבית את ההתאמה האוטומטית לעומס לפני שתעבירו את המכונה.
  • אי אפשר להעביר מכונה של Spanner לתקופת ניסיון בחינם. אפשר להעביר את המופע אחרי שמשדרגים למופע בתשלום.

שיקולי ביצועים

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

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

גיבויים

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

אם יש גיבויים בהגדרה המקורית של המופע שאתם צריכים לשמור, מומלץ להעתיק את הגיבויים לשני מופעים זמניים קטנים (100 יחידות PU), placeholder-source וplaceholder-dest:

  • placeholder-source: מופע עם אותה הגדרת מופע כמו ההגדרה המקורית של המופע שמועבר. כך תוכלו לשחזר את הגיבויים להגדרה המקורית אם תצטרכו לבטל את ההעברה.

  • placeholder-dest: מופע עם אותה תצורת מופע כמו תצורת מופע היעד. כך תוכלו לוודא שגיבוי יהיה זמין לכם בהגדרה החדשה מיד אחרי שההעברה תושלם.

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

אחרי שמעתיקים את הגיבויים אל placeholder-source ו-placeholder-dest, צריך למחוק את כל הגיבויים הקיימים בהגדרות המקוריות של המופע לפני שמעבירים את המופע. אחרי שההעברה של המופע תושלם, כבר תהיה לכם עותק של הגיבוי בהגדרת היעד. אפשר גם ליצור גיבוי חדש.

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

איך מעבירים מכונה

אפשר להעביר מכונה באמצעות Cloud Shell במסוף ו-CLI של gcloud באמצעות פקודות gcloud. Google Cloud

דרישות מוקדמות

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

  1. בודקים שיש לכם את spanner.instances.update הרשאת IAM במופע שרוצים להעביר.
  2. אם רלוונטי, כדאי להעביר את המקרים שאינם בייצור (כמו בדיקה והעברה לבמה) לפני העברת המקרים בייצור, כדי להעריך ולהבין את השפעת הביצועים על עומסי העבודה במהלך העברת מקרים.
  3. כשמעבירים מופע של Spanner, תהליך ההעברה מוחק את תגי המופע שיצרתם ב-Data Catalog. כדי לשמור את התגים, צריך לייצא אותם לפני המעבר ולייבא אותם אחרי המעבר. מידע נוסף זמין במאמר בנושא ייצוא וייבוא של תגים.

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

  • לפני שמבצעים העברה של מופע בסביבת הייצור, מומלץ לבדוק את עומסי העבודה של הביצועים במופעים שאינם בסביבת הייצור בהגדרות של מופע היעד. כדאי לנסות להעביר מופע בסביבת פיתוח שדומה למופע בסביבת הייצור, כדי להבין כמה זמן ייקח להעביר את המופע בסביבת הייצור.
  • בודקים שאין נקודות חמות במסדי הנתונים באמצעות Key Visualizer.
  • בודקים שיש לכם מספיק מכסת צמתים בהגדרת מופע היעד כדי לתמוך בשימוש המקסימלי הצפוי במופע. מידע נוסף זמין במאמר בנושא מכסות ומגבלות ב-Spanner.
  • חשוב לוודא שניצול המעבד בשיא של המכונה קטן מ-40% עבור הגדרת המכונה שהועברה, ושנפח האחסון לכל צומת קטן מ-1 טביבייט (TiB).
  • אל תבצעו שינויים במופע במהלך ההעברה. זה כולל שינוי של מספר הצמתים של המופע, שינוי של סכימות מסד הנתונים, יצירה או הסרה של מסדי נתונים ויצירה או מחיקה של גיבויים.

אם תעבירו את המופע בהתאם להמלצות האלה, ההעברה בדרך כלל תושלם תוך 24 שעות. עם זאת, בהתאם לעומס העבודה של האפליקציה, יכול להיות שזמן הסיום יהיה ארוך או קצר יותר.

העברת מכונה

מסוף Google Cloud

  1. נכנסים לדף Instances במסוף Google Cloud .

    מכונות

  2. בוחרים את המופע שרוצים להעביר.

  3. בדף הסקירה הכללית של המכונה, לצד Configuration, לוחצים על Move instance to a new configuration.

  4. בחלונית העברת מסד נתונים להגדרה חדשה, בוחרים את הגדרת המופע החדש של המופע.

  5. לוחצים על Save.

‫CLI של gcloud

משתמשים בפקודה gcloud spanner instances move כדי להעביר את המכונה.

gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_ID: המזהה הקבוע של המופע שרוצים להעביר.
  • TARGET_CONFIG: מזהה קבוע של הגדרת המכונה שאליה רוצים להעביר את המכונה. המיקום הגיאוגרפי החדש של המופע. יכול להיות שמדובר בהגדרת מופע אזורית, בשני אזורים או במספר אזורים (לדוגמה, nam3,‏ regional-us-central1 או custom-nam3-us-west2).

לדוגמה, כדי להעביר את המופע test-instance מההגדרה הנוכחית של המופע אל nam3, מריצים את הפקודה הבאה:

  gcloud spanner instances move test-instance --target-config=nam3

אופציונלי: אם רוצים להוסיף רפליקה לקריאה בלבד באזור us-west2 להגדרת מופע הבסיס ב-nam3, מבצעים את הפעולות הבאות:

  1. משכפלים את הגדרת הבסיס ומוסיפים את העותק לקריאה בלבד להגדרת מופע מותאם אישית חדש custom-nam3-us-west2:

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. מעבירים את המכונה test-instance מההגדרה הנוכחית שלה למכונה custom-nam3-us-west2 החדשה:

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

אופציונלי: העברת מופע עם מסדי נתונים שמופעל בהם CMEK

כדי להעביר מכונה עם מסדי נתונים שמופעלת בהם CMEK, משתמשים בפקודה gcloud spanner instances move. צריך לכלול את הדגל --target-database-move-configs ואת ערכי מפתח ה-KMS בפקודה, או להגדיר קובץ JSON או YAML עם מפתחות ה-KMS הנדרשים.

הערות שימוש:

  • אם יש לכם כמה מסדי נתונים שמופעלת בהם הצפנה באמצעות מפתח משל לקוח במופע שאתם רוצים להעביר, אתם צריכים לציין את --target-database-move-configs עבור כל אחד מהם. אפשר להשתמש באותם מפתחות לכל מסד נתונים, אבל צריך לציין את המפתחות לכל מסד נתונים שמופעלת בו הצפנת CMEK.
  • המפתחות צריכים לכסות את כל האזורים בהגדרות של מופע היעד. לדוגמה, אם הגדרת מכונת היעד נמצאת ב-nam3, צריך להגדיר מפתחות ב-regional-us-east4, ב-regional-us-east1 וב-regional-us-central1.
  • כשמעבירים את המופע, אי אפשר להגדיר מפתחות KMS למסדי נתונים שלא מופעל בהם CMEK.
  • במהלך העברת המופע, לא כדאי להשבית או להשמיד מפתחות CMEK בהגדרות של מופע המקור או מופע היעד. אם תנסו, ההעברה לא תתבצע.
  • אי אפשר להעביר מופע שיש לו מחיצות של מופעים. מידע נוסף על מגבלות של חלוקה גיאוגרפית זמין במאמר סקירה כללית על חלוקה גיאוגרפית.
gcloud spanner instances move INSTANCE_ID \
  --target-config=TARGET_CONFIG \
  --target-database-move-configs=^:^database-id=DATABASE_ID_1:kms-key-names=KMS_KEY_1[, KMS_KEY_2 ... ] \
  [--target-database-move-configs=^:^database-id=DATABASE_ID_2:kms-key-names=KMS_KEY_1 ... ]

או

gcloud spanner instances move INSTANCE_ID \
  --target-config=TARGET_CONFIG \
  --target-database-move-configs=CONFIG_FILE_PATH

מגדירים את קובץ CONFIG_FILE_PATH עם מזהי מסד הנתונים ומפתחות ה-KMS. בדוגמה הבאה של קובץ תצורה מופיעים מפתחות KMS לשני מסדי נתונים, database-1 ו-database-2, עם אותם מפתחות ב-regional-us-east4, ב-regional-us-east1 וב-regional-us-central1 כדי לכסות את כל האזורים ב-nam3.

[
  {
    database-id: database-1,
    kms-key-names:
      "projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
  },
  {
    database-id: database-2,
    kms-key-names:
      "projects/[your-project]/locations/us-east4/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-east1/keyRings/[your-keyring]/cryptoKeys/[your-key],projects/[your-project]/locations/us-central1/keyRings/[your-keyring]/cryptoKeys/[your-key]",
  },
]

איך עוקבים אחרי ההתקדמות של העברת מופע וביטול

אפשר להשתמש ב-gcloud spanner operations describe או ליצור לוח בקרה מותאם אישית של Cloud Monitoring כדי לעקוב אחרי התקדמות ההעברה של מופע.

הצגת ההתקדמות של פעולות ההעברה והביטול

כדי לעקוב אחרי ההתקדמות של פעולת העברה או ביטול של העברת מכונה, משתמשים בפקודה gcloud spanner operations describe. הפקודה הזו דורשת את מזהה הפעולה של פעולת העברת המופע שנמצאת בתהליך.

  1. כדי לקבל את מזהה הפעולה של פעולת העברת המכונה, מריצים את הפקודה:

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • INSTANCE_ID: המזהה הקבוע של המופע שרוצים להעביר.

    הפלט מציג רשימה של פעולות ממושכות, כולל פעולת ההעברה של המופע.

  2. מריצים את הפקודה gcloud spanner operations describe כדי לראות את אחוז ההתקדמות והסטטוס:

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • OPERATION_ID: מזהה הפעולה של פעולת העברת המופע שרוצים לבדוק.
    • INSTANCE_ID: מזהה המכונה של המכונה שרוצים לבדוק.

מעקב אחרי פעולת העברה של מכונה

אתם יכולים ליצור לוח בקרה מותאם אישית של Cloud Monitoring כדי להציג ולעקוב אחרי מדדים במהלך העברת המופע. זו פעולה ארוכת טווח שיכולות להיות לה השלכות על השירות.

התרשימים Total storage ו-Total database storage by databases בלוח הבקרה עוזרים לעקוב אחרי התקדמות ההעברה. אפשר לראות את נפח האחסון בהגדרת המקור יורד בהדרגה, ואת נפח האחסון בהגדרת היעד עולה.

מסוף Google Cloud

  1. מורידים את הקובץ move-instance-dashboard.json. בקובץ הזה יש את המידע שנדרש כדי לאכלס לוח בקרה בהתאמה אישית ב-Monitoring.
  2. במסוף Google Cloud , עוברים לדף  Dashboards:

    עוברים אל מרכזי בקרה.

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

  3. בדף סקירה כללית של מרכזי בקרה, לוחצים על יצירת מרכז בקרה.
  4. בסרגל הכלים של לוח הבקרה, לוחצים על התפריט הנפתח הגדרות לוח הבקרה. לאחר מכן בוחרים באפשרות JSON ואז באפשרות JSON Editor (עורך JSON).
  5. בחלונית JSON Editor, מעתיקים את התוכן של קובץ move-instance-dashboard.json שהורדתם ומדביקים אותו בעורך.
  6. כדי להחיל את השינויים על לוח הבקרה, לוחצים על החלת השינויים. אם אתם לא רוצים להשתמש במרכז הבקרה הזה, אתם יכולים לחזור לדף 'סקירה כללית של מרכזי הבקרה'.
  7. אחרי שיוצרים את לוח הבקרה, לוחצים על הוספת מסנן. לאחר מכן בוחרים באפשרות project_id או instance_id כדי לעקוב אחר התקדמות ההעברה של המופע.

‫CLI של gcloud

  1. מורידים את הקובץ move-instance-dashboard.json. בקובץ הזה יש את המידע שנדרש כדי לאכלס לוח בקרה בהתאמה אישית ב-Monitoring.
  2. כדי ליצור מרכז בקרה בפרויקט, משתמשים בפקודה gcloud monitoring dashboards create:

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    מידע נוסף זמין במאמר בנושא gcloud monitoring dashboards create.

איך מבטלים העברה של מופע

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

אפשר להשתמש ב-gcloud spanner operations cancel כדי לבטל פעולות של העברת מופעים. הביטול לא מתבצע באופן מיידי, והוא נמשך בערך אותו פרק זמן שעבר מאז תחילת ההעברה. הסיבה לכך היא שצריך להעביר את הנתונים בחזרה להגדרות של מופע המקור.

הפקודה הזו דורשת את מזהה הפעולה של פעולת העברת המופע שנמצאת בתהליך.

  1. מריצים את הפקודה הבאה כדי לקבל את מזהה הפעולה:

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • INSTANCE_ID: המזהה הקבוע של המופע שרוצים להעביר.

    בפלט מוצגת רשימה של פעולות העברה של מופעים שנמצאות בתהליך.

  2. מריצים את הפקודה gcloud spanner operations cancel כדי לבטל את העברת המכונה:

    gcloud spanner operations cancel OPERATION_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • OPERATION_ID: מזהה הפעולה של פעולת העברת המכונה שרוצים לבטל.

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