בדף הזה מוסבר איך להעביר מופע ב-Spanner.
אפשר להעביר את מופע Spanner מכל תצורת מופע לכל תצורה אחרת, כולל בין תצורות אזוריות, תצורות בשני אזורים ותצורות במספר אזורים. העברת המופע לא גורמת להשבתה, ו-Spanner ממשיך לספק את הערבויות הרגילות לעסקאות, כולל עקביות חזקה, במהלך ההעברה.
אפשר גם להעביר את המכונה מההגדרה של מכונת המקור להגדרה של מכונה בהתאמה אישית (לדוגמה, הגדרת בסיס nam3 עם העתק לקריאה בלבד us-west2). אי אפשר לעדכן את הטופולוגיה של הגדרות קיימות של מכונות, ולכן צריך קודם ליצור הגדרה חדשה של מכונה בהתאמה אישית עם הטופולוגיה הרצויה. אחרי שיוצרים את ההגדרה החדשה של המכונה בהתאמה אישית, אפשר להעביר את המכונה מההגדרה של מכונת המקור להגדרה החדשה של המכונה בהתאמה אישית.
למה כדאי להעביר את המכונה של Spanner?
היתרונות של העברת המופע כוללים:
- הגדלת הזמינות: אפשר להשיג זמינות של 99.999% ללא השבתה אחרי מעבר מאזור יחיד לשני אזורים או למספר אזורים.
- צמצום זמן האחזור: צמצום זמן האחזור והגדלת הכיסוי הגיאוגרפי באמצעות העברה מאזור לשני אזורים או למספר אזורים, או ממספר אזורים למספר אזורים, עם רפליקות נוספות לקריאה בלבד.
- צמצום העלויות: כדי לצמצם את העלויות השעתיות, אפשר לעבור מהגדרה של שני אזורים או של כמה אזורים להגדרה אזורית.
- מיקום משותף של מסד הנתונים: כדי למקם את מסד הנתונים של Spanner יחד עם אפליקציית הלקוח, מעבירים את המופע למיקום אופטימלי יותר.
תמחור
כשמעבירים מופע, גם תצורת מופע המקור וגם תצורת מופע היעד כפופות לחיובים על מחשוב ואחסון לפי שעה. אחרי שההעברה תושלם, החיוב על נפח האחסון של המופע יתבצע בהתאם להגדרות של יעד ההעברה.
אם אתם מעבירים את המופע שלכם להגדרת מופע חדשה של אזור, שני אזורים או מספר אזורים, יכול להיות שתחויבו על העברת נתונים יוצאת. מידע נוסף מופיע במאמר בנושא תמחור של Spanner.
מגבלות
- כדי להעביר את המופע, הוא צריך לכלול לפחות 1 צומת (1,000 יחידות עיבוד).
- אי אפשר להעביר את המופע בין פרויקטים ובין Google Cloud חשבונות.
- אי אפשר להעביר מכונה שמשתמשת במהדורת Standard ישירות מהגדרת מכונה אזורית להגדרת מכונה בשני אזורים או במספר אזורים. קודם צריך לשדרג את המהדורה של המכונה למהדורת Enterprise Plus, ואז להעביר את המכונה.
- אם יש לכם בקשות פעילות שמשתמשות בנקודת קצה אזורית של שירות בכל אחד ממשאבי המופע, העברת המופע תשפיע על כל הבקשות שמשתמשות בנקודת הקצה האזורית, כי האכיפה האזורית חוסמת גישה למופעים חוצי-אזורים. בקשות שמשתמשות בנקודת קצה גלובלית לא מושפעות.
- גיבויים של Spanner הם ספציפיים להגדרת מופע ולא נכללים כשמעבירים מופע. מידע נוסף מופיע במאמר בנושא גיבויים.
- ממשקי ה-API הבאים מושבתים במהלך העברת מופע:
InstanceAdmin.DeleteInstanceInstanceAdmin.UpdateInstanceDatabaseAdmin.CreateDatabaseDatabaseAdmin.UpdateDatabaseDdl(מושבת אםdefault_leaderמצוין בבקשה).DatabaseAdmin.RestoreDatabaseDatabaseAdmin.CreateBackupDatabaseAdmin.CreateBackupScheduleDatabaseAdmin.CopyBackup
- אם במסד נתונים יש מנהיג ברירת מחדל ששונה, הבחירה נשמרת אם היא מציינת אזור לקריאה ולכתיבה בהגדרת מופע היעד, וההגדרה הזו היא רב-אזורית. אם הגדרת היעד היא אזורית, או אם היא לא כוללת את האזור בעל השם לקריאה ולכתיבה, ברירת המחדל של בחירת הלידר מבוטלת.
- העברה של מופע משנה את מאפיין ההגדרה של המופע. אם אתם מנהלים את משאבי Spanner באמצעות אוטומציה, חשוב להכין את עצמכם לכל אי-התאמה שעלולה לקרות ולטפל בה.
- לדוגמה, אם אתם משתמשים ב-Terraform כדי לנהל את המופעים ומסדי הנתונים של Spanner, ואתם מפעילים את
terraform apply --auto-approveכדי שהמשאבים יישארו מסונכרנים, כל המופעים ומשאבי הצאצא יימחקו כשנעביר את המופע. כדי למנוע מחיקה ואובדן נתונים, צריך לעדכן את ההגדרות בהתאם. מידע נוסף על הפקודהapplyזמין במאמר בנושא אפשרויות של Terraform Apply.
- לדוגמה, אם אתם משתמשים ב-Terraform כדי לנהל את המופעים ומסדי הנתונים של Spanner, ואתם מפעילים את
- במהלך ההעברה של המופע, יכול להיות שהמדדים והתרשימים של ניטור Spanner יציגו נתונים בשתי הגדרות המופע – המקור והיעד – או רק בהגדרה אחת.
- אם הגדרתם את כלי Autoscaler בקוד פתוח, אין צורך להשבית אותו. הפעולה נכשלת כי
InstanceAdmin.UpdateInstance(שמשמשת לשינויים ביחידת העיבוד ובצומת) מושבתת. - אי אפשר להעביר מופע אם התכונה Spanner managed autoscaler מופעלת בו. כדי להעביר את המכונה, צריך להשבית את קנה המידה האוטומטי המנוהל, להעביר את המכונה ואז להפעיל מחדש את קנה המידה האוטומטי המנוהל.
- בנוסף, אם אתם משתמשים בהתאמה אוטומטית לעומס, אתם צריכים להקצות מספיק צמתים לשימוש שיא במעבד בהתאם להמלצות המקסימליות שצוינו, ואז להשבית את ההתאמה האוטומטית לעומס לפני שתעבירו את המכונה.
- אי אפשר להעביר מכונה של Spanner לתקופת ניסיון בחינם. אפשר להעביר את המופע אחרי שדרוג למופע בתשלום.
שיקולי ביצועים
כשמעבירים מופע, הוא חווה חביון גבוה יותר של קריאה-כתיבה ושיעור גבוה יותר של ביטול עסקאות. השימוש במעבד במהלך ההעברה עשוי להגיע ל-100% כי ההעברה של המופע מתבצעת באמצעות מעבד חלופי שהוקצה על ידי המשתמש. עם זאת, העברת מופע לא גורמת להשבתה. הזמן שנדרש להעברת מופע תלוי בגורמים שונים, כולל גודל מסדי הנתונים, מספר הצמתים וסוג ההעברה (למשל, מאזור לאזור מרובה).
אחרי שמזיזים מופע, הביצועים של המופע משתנים בהתאם לפרטים של הגדרת המופע. לדוגמה, לתצורות של שני אזורים ולתצורות של מספר אזורים יש בדרך כלל זמן אחזור גבוה יותר לכתיבה וזמן אחזור נמוך יותר לקריאה מאשר לתצורות אזוריות.
גיבויים
כשמעבירים מופע, הגיבויים בהגדרה המקורית של המופע לא מועברים אוטומטית להגדרת היעד החדשה. העברת המופע מבוטלת אם קיימים גיבויים בתצורה המקורית של המופע כשמתחילים את העברת המופע. חשוב להעתיק את הגיבויים ולעיין בתוכנית לשחזור נתונים לפני שמבצעים את ההעברה של המופע.
אם יש גיבויים בהגדרה המקורית של המופע שאתם צריכים לשמור, מומלץ להעתיק את הגיבויים לשני מופעים זמניים קטנים (100 יחידות קיבולת), placeholder-source וplaceholder-dest:
placeholder-source: מופע עם אותה הגדרת מופע כמו ההגדרה המקורית של המופע שמועבר. כך תוכלו לשחזר את הגיבויים שלכם להגדרה המקורית אם תצטרכו לבטל את ההעברה.
placeholder-dest: מופע עם אותה תצורת מופע כמו תצורת מופע היעד. כך תוכלו לוודא שיהיה לכם גיבוי זמין בקלות בהגדרה החדשה מיד אחרי שההעברה תושלם.
תכונת השחזור לא תומכת בשחזורים בין תצורות שונות, ולכן מופעלות דוגמאות פלייסהולדר כדי לאפשר חזרה מהירה לגרסה קודמת או שחזור בתצורה החדשה אם צריך. כך יש רשת ביטחון למקרה של בעיות בדוגמה שהועברה.
אחרי שמעתיקים את הגיבויים אל placeholder-source ו-placeholder-dest, צריך למחוק את כל הגיבויים הקיימים בהגדרות המקוריות של המופע לפני שמעבירים את המופע. לאחר מכן, אחרי שהעתקת המופע תושלם, תהיה לכם כבר עותק של הגיבוי בהגדרת היעד. אפשר גם ליצור גיבוי חדש.
הגישה הזו מבטיחה את המשכיות העסקית ומצמצמת את זמני ההשבתה הפוטנציאליים או את אובדן הנתונים במהלך תהליך העברת המופע.
איך מעבירים מכונה
אפשר להעביר מכונה באמצעות Cloud Shell במסוף ו-CLI של gcloud באמצעות פקודות gcloud. Google Cloud
דרישות מוקדמות
לפני שמעבירים את הגדרות המופע, חשוב לקרוא את הקטעים מגבלות ושיקולים לגבי ביצועים. לאחר מכן, פועלים לפי השלבים הבאים:
- בודקים שיש לכם
spanner.instances.updateהרשאת IAM במופע שרוצים להעביר. - אם רלוונטי, כדאי להעביר את המקרים ללא ייצור (כמו בדיקה והעברה לבמה) לפני העברת המקרים לייצור, כדי להעריך ולהבין את השפעת הביצועים על עומסי העבודה במהלך העברת מקרים.
- כשמעבירים מופע של Spanner, תהליך ההעברה מוחק את תגי המופע שיצרתם ב-Data Catalog. כדי לשמור את התגים, צריך לייצא אותם לפני המעבר ולייבא אותם אחרי המעבר. מידע נוסף זמין במאמר בנושא ייצוא וייבוא של תגים.
כדאי לפעול גם לפי ההנחיות הבאות:
- לפני שמזיזים את מופע הייצור, כדאי לבדוק את עומסי העבודה של הביצועים במופעים שאינם מופעי ייצור בהגדרת מופע היעד. כדאי לנסות להעביר מופע של סביבת פיתוח שדומה למופע של סביבת הייצור, כדי להבין כמה זמן ייקח להעביר את מופע סביבת הייצור.
- בודקים שאין נקודות חמות במסדי הנתונים באמצעות Key Visualizer.
- בודקים שיש לכם מספיק מכסת צמתים בהגדרת מופע היעד כדי לתמוך בשימוש המקסימלי הצפוי במופע. מידע נוסף זמין במאמר בנושא מכסות ומגבלות ב-Spanner.
- חשוב לוודא שניצול המעבד בשיא של המכונה קטן מ-40% עבור הגדרת המכונה שהועברה, ושנפח האחסון לכל צומת קטן מ-1 טביבייט (TiB).
- אל תבצעו שינויים במופע במהלך ההעברה. זה כולל שינוי של מספר הצמתים של המופע, שינוי של סכימות מסד נתונים, יצירה או מחיקה של מסדי נתונים ויצירה או מחיקה של גיבויים.
אם תעבירו את המופע בהתאם להמלצות האלה, ההעברה בדרך כלל תושלם תוך 24 שעות. עם זאת, בהתאם לעומס העבודה של האפליקציה, יכול להיות שזמן הסיום יהיה ארוך או קצר יותר.
העברת מכונה
מסוף Google Cloud
נכנסים לדף Instances במסוף Google Cloud .
בוחרים את המופע שרוצים להעביר.
בדף הסקירה הכללית של המכונה, לצד Configuration, לוחצים על Move instance to a new configuration.
בחלונית העברת מסד נתונים להגדרה חדשה, בוחרים את הגדרת המופע החדש של המופע.
לוחצים על 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, מבצעים את הפעולות הבאות:
משכפלים את הגדרת הבסיס ומוסיפים את העותק לקריאה בלבד להגדרת מופע מותאם אישית חדש
custom-nam3-us-west2:gcloud spanner instance-configs create custom-nam3-us-west2 \ --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLYמעבירים את המכונה
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. הפקודה הזו דורשת את מזהה הפעולה של פעולת העברת המופע שנמצאת בתהליך.
מריצים את הפקודה הבאה כדי לקבל את מזהה הפעולה של פעולת העברת המכונה:
gcloud spanner operations list --instance="INSTANCE_ID"מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_ID: המזהה הקבוע של המופע שרוצים להעביר.
הפלט מציג רשימה של פעולות ממושכות, כולל פעולת ההעברה של המופע.
מריצים את הפקודה
gcloud spanner operations describeכדי לראות את אחוז ההתקדמות והסטטוס:gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_IDמחליפים את מה שכתוב בשדות הבאים:
- OPERATION_ID: מזהה הפעולה של פעולת העברת המופע שרוצים לבדוק.
- INSTANCE_ID: מזהה המכונה של המכונה שרוצים לבדוק.
מעקב אחרי פעולת העברה של מופע
אתם יכולים ליצור לוח בקרה מותאם אישית ב-Cloud Monitoring כדי להציג ולעקוב אחרי מדדים במהלך העברת המופע. זו פעולה ארוכת טווח שיכולות להיות לה השלכות על השירות.
התרשימים סה"כ נפח האחסון וסה"כ נפח האחסון של מסד הנתונים לפי מסדי נתונים בלוח הבקרה עוזרים לעקוב אחרי התקדמות ההעברה. אפשר לראות את נפח האחסון בהגדרת המקור יורד בהדרגה, בזמן שנפח האחסון בהגדרת היעד עולה.
מסוף Google Cloud
- מורידים את הקובץ
move-instance-dashboard.json. בקובץ הזה יש את המידע שנדרש כדי לאכלס לוח בקרה בהתאמה אישית ב-Monitoring. -
במסוף Google Cloud , עוברים לדף Dashboards:
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
- בדף סקירה כללית של מרכזי בקרה, לוחצים על יצירת מרכז בקרה.
- בסרגל הכלים של לוח הבקרה, לוחצים על התפריט הנפתח הגדרות לוח הבקרה. לאחר מכן בוחרים באפשרות JSON ואז באפשרות JSON Editor (עורך JSON).
- בחלונית JSON Editor, מעתיקים את התוכן של קובץ
move-instance-dashboard.jsonשהורדתם ומדביקים אותו בעורך. - כדי להחיל את השינויים על לוח הבקרה, לוחצים על החלת השינויים. אם אינכם רוצים להשתמש במרכז הבקרה הזה, נווטו חזרה לדף 'סקירה כללית של מרכזי הבקרה'.
- אחרי שיוצרים את לוח הבקרה, לוחצים על הוספת מסנן. לאחר מכן בוחרים באפשרות
project_idאוinstance_idכדי לעקוב אחרי התקדמות ההעברה של המופע.
CLI של gcloud
- מורידים את הקובץ
move-instance-dashboard.json. בקובץ הזה יש את המידע שנדרש כדי לאכלס לוח בקרה בהתאמה אישית ב-Monitoring. כדי ליצור מרכז בקרה בפרויקט, משתמשים בפקודה
gcloud monitoring dashboards create:gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.jsonמידע נוסף זמין במאמר בנושא
gcloud monitoring dashboards create.
איך מבטלים העברה של מופע
אפשר לבטל העברה של מופע רק בזמן שהיא מתבצעת. אם רוצים לבטל העברה של מופע שכבר הושלמה, צריך להתחיל העברה חדשה.
אפשר להשתמש ב-gcloud spanner operations cancel כדי לבטל פעולות של העברת מופעים. הביטול לא מתבצע באופן מיידי, והוא נמשך בערך אותו פרק זמן שחלף מאז תחילת ההעברה. הסיבה לכך היא שצריך להעביר את הנתונים בחזרה להגדרות של מופע המקור.
הפקודה הזו דורשת את מזהה הפעולה של פעולת העברת המופע שנמצאת בתהליך.
מריצים את הפקודה הבאה כדי לקבל את מזהה הפעולה:
gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID" --filter="done:False AND metadata.@type:MoveInstanceMetadataמחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_ID: המזהה הקבוע של המופע שרוצים להעביר.
בפלט מוצגת רשימה של פעולות להעברת מופעים שנמצאות בתהליך.
מריצים את הפקודה
gcloud spanner operations cancelכדי לבטל את העברת המכונה:gcloud spanner operations cancel OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
- OPERATION_ID: מזהה הפעולה של פעולת העברת המכונה שרוצים לבטל.
המאמרים הבאים
- מידע נוסף על הגדרות אזוריות, הגדרות של צמדים של שני אזורים והגדרות של כמה אזורים ב-Spanner
- Google Cloud מידע נוסף על אזורים ותחומים