בדף הזה מוסבר על שיבוט, ומתואר איך לשבט מכונה.
סקירה כללית
שיבוט של מכונת Cloud SQL יוצר מכונה חדשה שהיא עותק של מכונת המקור. המופע החדש הוא בלתי תלוי לחלוטין במופע המקור.
שיבוט רגיל
שיבוט רגיל יוצר גיבוי מלא של מופע המקור. לאחר מכן, המופע משתמש בגיבוי הזה כדי להקצות מופע חדש ונפרד. המופע החדש הוא עותק עצמאי מבחינה פונקציונלית של המקור בזמן שהפעולה התחילה. משך הפעולה של שיבוט רגיל הוא יחסי לגודל מסד הנתונים.
שאלות נפוצות
| שאלה | תשובה |
|---|---|
| האם שיבוט משפיע על הביצועים? | לא. שיבוט לא משפיע על הביצועים של מופע המקור. |
| האם הגיבויים מועתקים למופע החדש? | לא. המופע החדש יוצר גיבויים אוטומטיים חדשים. גיבויים ידניים לא מועתקים ממופע המקור. |
| האם למכונה הווירטואלית החדשה יש את אותה כתובת או כתובות IP? | לא. למופע החדש יש כתובת IP חדשה או כתובות IP חדשות. |
| האם למופע החדש יש את אותן הגדרות תצורה? | כן. למופע החדש יש את אותן הגדרות, כמו דגלים של מסד הנתונים, אפשרויות קישוריות, סוג מכונה והגדרות אחסון וזיכרון. |
| האם הרפליקות מועתקות למופע החדש? | לא. צריך ליצור רפליקות חדשות עבור המופע החדש. |
| האם אפשר לשכפל רפליקה? | לא. אי אפשר לשכפל רפליקה. |
| האם אפשר ליצור שיבוט מנקודת זמן מוקדמת יותר? | כן. שחזור מערכת מנקודה מסוימת בזמן מתבצע באמצעות שיבוט כדי לשחזר מופע מנקודה מוקדמת יותר בזמן. כך תוכלו לשחזר את מסד הנתונים מאירוע הרסני. |
| האם הגדרות התחזוקה של מופע המקור מועתקות באופן אוטומטי למופע המשובט? | לא. צריך להגדיר את הגדרות התחזוקה של מופע המשובט. |
| האם אפשר לשכפל מסד נתונים לפרויקט אחר? | לא. אי אפשר לשכפל מסד נתונים לפרויקט אחר. |
| האם אפשר לשכפל מופע ששוכפל בעבר? | כן. אפשר לשכפל מופע ששוכפל ממופע אחר. |
| האם משתמשי מסד הנתונים מועתקים למופע החדש? | כן, אבל סיסמאות של משתמשי מסד נתונים לא מועתקות וצריך ליצור אותן מחדש. |
שכפול מופע
אפשר לשכפל מופע Cloud SQL באמצעות מסוף Google Cloud , ה-CLI של gcloud, Terraform או ה-API.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מוצאים את השורה של המופע שרוצים לשכפל.
- בעמודה פעולות, לוחצים על התפריט עוד פעולות.
- לוחצים על יצירת שיבוט.
- בדף Create a clone (יצירת שיבוט), מעדכנים את מזהה המופע אם צריך ולוחצים על Create clone (יצירת שיבוט) כשהאפשרות Clone current state of instance (שיבוט המצב הנוכחי של המופע) מסומנת.
אתם חוזרים לדף של רשימת המופעים בזמן שהשיבוט מתבצע.
gcloud
כדי לשכפל מכונה, משתמשים בפקודה gcloud sql instances clone:
gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \ --project PROJECT_ID \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
מחליפים את הפרטים הבאים:
- SOURCE_INSTANCE_NAME: השם של מופע Cloud SQL לשכפול.
- DESTINATION_INSTANCE_NAME: השם של המופע המשוכפל.
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את מופעי המקור והיעד.
- ZONE_NAME: אופציונלי. השם של האזור הראשי של מופע היעד. משתמשים באפשרות הזו אם רוצים שהמופע של היעד יהיה באזור ראשי שונה מזה של מופע Cloud SQL שמשכפלים. במקרה של מופע אזורי, האזור הזה מחליף את האזור הראשי, אבל האזור המשני נשאר זהה לזה של מופע המקור.
- SECONDARY_ZONE_NAME: אופציונלי. השם של האזור המשני של מופע היעד. משתמשים בפרמטר הזה כדי לציין אזור משני אחר למופע האזורי של Cloud SQL שרוצים לשכפל.
אם אתם משתמשים בפרמטרים --preferred-zone ו---preferred-secondary-zone, התנאים הבאים חלים:
- האזורים הראשי והמשני צריכים להיות אזורים תקינים.
- שני האזורים צריכים להיות באותו אזור כמו מופע המקור.
- האזורים הראשי והמשני צריכים להיות שונים.
- במקרים של מופעים אזוריים, אי אפשר להשתמש בפרמטר
--preferred-secondary-zone. אם תעשו זאת, תהליך שיבוט המופע ייכשל. - אם לא מציינים ערכים לפרמטרים
--preferred-zoneאו--preferred-secondary-zone, למופע המשוכפל יהיו אותם אזורים ראשיים ומשניים כמו למופע המקור.
כדי להריץ את הפקודה gcloud sql instances clone, צריכה להיות לכם ההרשאה cloudsql.instances.clone. למידע נוסף על ההרשאות הנדרשות להרצת פקודות של ה-CLI של gcloud, אפשר לעיין במאמר הרשאות Cloud SQL.
Terraform
כדי לשכפל את המופע, משתמשים במשאב של Terraform
החלה של השינויים
כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
מחיקת השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את מופעי המקור והיעד.
- SOURCE_INSTANCE_NAME: השם של מופע Cloud SQL לשכפול.
- DESTINATION_INSTANCE_NAME: השם של המופע המשוכפל.
- ZONE_NAME: אופציונלי. השם של האזור הראשי של מופע היעד. משתמשים באפשרות הזו אם רוצים שהמופע של היעד יהיה באזור ראשי שונה מזה של מופע Cloud SQL שמשכפלים. במקרה של מופע אזורי, האזור הזה מחליף את האזור הראשי, אבל האזור המשני נשאר זהה לזה של מופע המקור.
- SECONDARY_ZONE_NAME: אופציונלי. השם של האזור המשני של מופע היעד. משתמשים בפרמטר הזה כדי לציין אזור משני אחר למופע האזורי של Cloud SQL שרוצים לשכפל.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
תוכן בקשת JSON:
{
"cloneContext":
{
"destinationInstanceName": "DESTINATION_INSTANCE_NAME",
"preferredZone": "ZONE_NAME",
"preferredSecondaryZone": "SECONDARY_ZONE_NAME"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
אם אתם משתמשים בפרמטרים preferredZone ו-preferredSecondaryZone, התנאים הבאים חלים:
- האזורים הראשי והמשני צריכים להיות אזורים תקינים.
- שני האזורים צריכים להיות באותו אזור כמו מופע המקור.
- האזורים הראשי והמשני צריכים להיות שונים.
- במקרים של מופעים אזוריים, אי אפשר להשתמש בפרמטר
preferredSecondaryZone. אם תעשו זאת, תהליך שיבוט המופע ייכשל. - אם לא מציינים ערכים לפרמטרים
preferredZoneאוpreferredSecondaryZone, למופע המשוכפל יהיו אותם אזורים ראשיים ומשניים כמו למופע המקור.
כדי להשתמש ב-method instances.clone API, אתם צריכים את ההרשאה cloudsql.instances.clone. מידע נוסף על ההרשאות הנדרשות לשימוש בשיטות API זמין במאמר הרשאות Cloud SQL.
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את מופעי המקור והיעד.
- SOURCE_INSTANCE_NAME: השם של מופע Cloud SQL לשכפול.
- DESTINATION_INSTANCE_NAME: השם של המופע המשוכפל.
- ZONE_NAME: אופציונלי. השם של האזור הראשי של מופע היעד. משתמשים באפשרות הזו אם רוצים שהמופע של היעד יהיה באזור ראשי שונה מזה של מופע Cloud SQL שמשכפלים. במקרה של מופע אזורי, האזור הזה מחליף את האזור הראשי, אבל האזור המשני נשאר זהה לזה של מופע המקור.
- SECONDARY_ZONE_NAME: אופציונלי. השם של האזור המשני של מופע היעד. משתמשים בפרמטר הזה כדי לציין אזור משני אחר למופע האזורי של Cloud SQL שרוצים לשכפל.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
תוכן בקשת JSON:
{
"cloneContext":
{
"destinationInstanceName": "DESTINATION_INSTANCE_NAME",
"preferredZone": "ZONE_NAME",
"preferredSecondaryZone": "SECONDARY_ZONE_NAME"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
אם אתם משתמשים בפרמטרים preferredZone ו-preferredSecondaryZone, התנאים הבאים חלים:
- האזורים הראשי והמשני צריכים להיות אזורים תקינים.
- שני האזורים צריכים להיות באותו אזור כמו מופע המקור.
- האזורים הראשי והמשני צריכים להיות שונים.
- במקרים של מופעים אזוריים, אי אפשר להשתמש בפרמטר
preferredSecondaryZone. אם תעשו זאת, תהליך שיבוט המופע ייכשל. - אם לא מציינים ערכים לפרמטרים
preferredZoneאוpreferredSecondaryZone, למופע המשוכפל יהיו אותם אזורים ראשיים ומשניים כמו למופע המקור.
כדי להשתמש ב-method instances.clone API, אתם צריכים את ההרשאה cloudsql.instances.clone. מידע נוסף על ההרשאות הנדרשות לשימוש בשיטות API זמין במאמר הרשאות Cloud SQL.
שיבוט של מכונה שמשתמשת בכתובת IP פנימית
אם מכונת Cloud SQL משתמשת בכתובת IP פנימית, אפשר לציין טווח כתובות IP שהוקצה לכתובת ה-IP החדשה של השיבוט. לדוגמה, google-managed-services-default.
gcloud
משכפלים את המכונה, ואם רוצים, מציינים את טווח כתובות ה-IP שהוקצה שבו רוצים להשתמש:
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --allocated-ip-range-name ALLOCATED_IP_RANGE_NAME
למשתמש או לחשבון השירות שמריצים את הפקודה gcloud sql instances clone צריכה להיות ההרשאה cloudsql.instances.clone. למידע נוסף על ההרשאות הנדרשות להרצת פקודות של ה-CLI של gcloud, אפשר לעיין במאמר הרשאות Cloud SQL.
REST v1
משכפלים את המכונה, ואם רוצים, מציינים את טווח כתובות ה-IP שהוקצה שבו רוצים להשתמש:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- source-instance-id: מזהה מכונת המקור
- target-instance-id: מזהה מכונת היעד
- allocated-ip-range-name: השם של טווח כתובות ה-IP שהוקצה
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
תוכן בקשת JSON:
{
"cloneContext":
{
"destinationInstanceName": "target-instance-id",
"allocatedIpRange": "allocated-ip-range-name"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
למשתמש או לחשבון השירות שמשתמשים ב-method של instances.clone API צריכה להיות ההרשאה cloudsql.instances.clone. מידע נוסף על ההרשאות הנדרשות לשימוש בשיטות API זמין במאמר הרשאות Cloud SQL.
REST v1beta4
משכפלים את המכונה, ואם רוצים, מציינים את טווח כתובות ה-IP שהוקצה שבו רוצים להשתמש:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- source-instance-id: מזהה מכונת המקור
- target-instance-id: מזהה מכונת היעד
- allocated-ip-range-name: השם של טווח כתובות ה-IP שהוקצה
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
תוכן בקשת JSON:
{
"cloneContext":
{
"destinationInstanceName": "target-instance-id",
"allocatedIpRange": "allocated-ip-range-name"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
למשתמש או לחשבון השירות שמשתמשים ב-method של instances.clone API צריכה להיות ההרשאה cloudsql.instances.clone. מידע נוסף על ההרשאות הנדרשות לשימוש בשיטות API זמין במאמר הרשאות Cloud SQL.
אם לא מציינים טווח כתובות IP שהוקצה, מתרחשת ההתנהגות הבאה:
- אם מופע המקור נוצר עם טווח מוגדר, המופע המשוכפל נוצר באותו הטווח.
- אם מופעלת במכונת המקור האפשרות 'הקצאת טווח כתובות', המכונה המשוכפלת נוצרת בטווח אקראי.
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
השיבוט נכשל עם השגיאה constraints/sql.restrictAuthorizedNetworks. |
הפעולה של שיבוט נחסמת על ידי ההגדרה Authorized Networks.
Authorized Networks מוגדרות לכתובות IP ציבוריות בקטע 'קישוריות' במסוף Google Cloud , ואין אפשרות לשכפול בגלל שיקולי אבטחה.
אם אפשר, מסירים את כל הערכים של |
הודעת שגיאה: Failed to create subnetwork. Couldn't find free
blocks in allocated IP ranges. Please allocate new ranges for this service
provider. Help Token: [help-token-id]. |
ניסיתם להשתמש במסוף כדי לשכפל מכונה עם כתובת IP פרטית, אבל לא ציינתם את טווח כתובות ה-IP שהוקצה שבו אתם רוצים להשתמש, והמכונה המקורית לא נוצרה עם הטווח שצוין. Google Cloud כתוצאה מכך, המכונה המשוכפלת נוצרת בטווח אקראי. משתמשים ב- |