בדף הזה מוסבר על שיבוט, ומתואר איך לשבט מכונה.
סקירה כללית
שיבוט של מכונת Cloud SQL יוצר מכונה חדשה שהיא עותק של מכונת המקור. המופע החדש הוא בלתי תלוי לחלוטין במופע המקור.
שיבוט רגיל
שיבוט רגיל יוצר גיבוי מלא של מופע המקור. לאחר מכן, המופע משתמש בגיבוי הזה כדי להקצות מופע חדש ונפרד. המופע החדש הוא עותק עצמאי מבחינה פונקציונלית של המקור בזמן שהפעולה התחילה. משך הפעולה של שיבוט רגיל הוא יחסי לגודל מסד הנתונים.
שכפול מהיר
שיבוט מהיר משתמש בתמונת מצב מיידית כדי ליצור מופע חדש, וזו התפתחות משמעותית בהשוואה לפעולת שיבוט רגילה.
כשמתחילים פעולת שיבוט באותו אזור שבו נמצאת מכונת המקור, שיבוט מהיר יוצר Instant Snapshot. לאחר מכן הוא יוצר את הדיסק החדש באמצעות ה-Snapshot המיידי הזה. התהליך הזה הוא פעולה של מטא-נתונים בלבד, ולכן גודל הנתונים לא משפיע על זמן יצירת השיבוט.
מתי משתמשים בשיבוט מהיר
Cloud SQL משתמש אוטומטית בשיבוט מהיר כשמתקיימים התנאים הבאים:
- פעולות באותו אזור: פעולת השיבוט צריכה להתבצע באותו אזור שבו נמצא מופע המקור. אם מציינים אזור אחר (או אפילו מציינים מחדש את אותו אזור), התהליך יחזור לברירת המחדל של תהליך השיבוט הרגיל.
- עקביות במאפייני הדיסק: מאפייני הדיסק של השיבוט החדש חייבים להיות זהים לאלה של מכונת המקור (למשל, Persistent Disk לעומת Google Cloud Hyperdisk, סוג ההצפנה, גודל הבלוק).
- תמיכה במנוע מסד הנתונים: מנוע מסד הנתונים הוא Cloud SQL ל-MySQL או Cloud SQL ל-PostgreSQL
אם פעולת השיבוט שלכם דורשת שחזור לנקודת זמן ספציפית בשחזור (PITR), מערכת ברירת המחדל תעבור לתהליך העבודה הרגיל של שיבוט.
השוואה בין שיטות שיבוט
בטבלה הבאה מוצגת השוואה בין התכונות של שיבוט מהיר ושיבוט רגיל:
| תכונה | שיבוט רגיל | שכפול מהיר |
|---|---|---|
| טכנולוגיה | תמונות מצב רגילות | תמונות מצב מיידיות |
| העברת נתונים | העתקה מלאה של נתונים אל Cloud Storage וממנו. המשך פרופורציונלי לגודל מסד הנתונים. | פעולה של שיבוט באותו אזור, שכוללת רק מטא-נתונים. גודל הנתונים לא משפיע על זמן היצירה של השיבוט. |
| משך הזמן | שעות למסדי נתונים גדולים. | השלבים ליצירת שיבוט יכולים להימשך שניות עד דקות. |
| דרישות גיבוי | יוצר גיבוי מלא זמני ב-Cloud Storage. | משתמשים ב-Instant Snapshot שנמחק אחרי שיוצרים את הדיסק החדש. |
| תחולה | תמיכה בשיבוטים חוצי אזורים וחוצי אזורים גיאוגרפיים. | אפשר לשכפל רק באותו אזור. |
שאלות נפוצות
| שאלה | תשובה |
|---|---|
| האם שיבוט משפיע על הביצועים? | לא. שיבוט לא משפיע על הביצועים של מופע המקור. |
| האם הגיבויים מועתקים למופע החדש? | לא. המופע החדש יוצר גיבויים אוטומטיים חדשים. גיבויים ידניים לא מועתקים ממופע המקור. |
| האם למכונה הווירטואלית החדשה יש את אותה כתובת או כתובות 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 שהוקצה, מתרחשת ההתנהגות הבאה:
- אם מופע המקור נוצר עם טווח מוגדר, המופע המשוכפל נוצר באותו הטווח.
- אם מופעלת במכונת המקור האפשרות 'הקצאת טווח כתובות', המכונה המשוכפלת נוצרת בטווח אקראי.
שיבוט של מופע לפרויקט אחר
אפשר לשכפל מכונה לפרויקט אחר באותו organization. אם משכפלים נתונים באותו אזור, Cloud SQL משתמש ב-Instant Snapshot, שמאיץ את תהליך השכפול. כתוצאה מכך, אתם יכולים לשכפל מקרים גדולים תוך דקות, לעומת שעות בשיטות ייצוא וייבוא רגילות. אם מבצעים שיבוט לאזור אחר, Cloud SQL משתמש בשיטת הצילום הרגילה לשיבוט, שמשך הביצוע שלה ארוך יותר בהשוואה למנגנון של צילום מיידי.
לפני שמתחילים
לפני שיבוט מופע לפרויקט אחר, צריך לוודא שמתקיימות הדרישות הבאות:
- פרויקט המקור ופרויקט היעד צריכים להיות באותו ארגון.
- צריך להגדיר ברשת היעד את
private services access. - לחשבון המשתמש שמבצע את פעולת השיבוט צריכות להיות הרשאות ה-IAM הבאות:
-
cloudsql.instances.cloneבפרויקט המקור -
cloudsql.instances.createבפרויקט היעד.
-
מידע נוסף זמין במאמר הרשאות IAM ב-Cloud SQL.
- צריך להפעיל את ממשקי ה-API הבאים בפרויקט היעד:
- Cloud SQL Admin API (
sqladmin.googleapis.com) - Service Networking API (
servicenetworking.googleapis.com) - Compute Engine API (
compute.googleapis.com)
- Cloud SQL Admin API (
מידע נוסף זמין במאמר תחילת השימוש ב-Cloud APIs.
ביצוע שכפול בין פרויקטים
אפשר לבצע פעולת שיבוט בין פרויקטים באמצעות ה-CLI של gcloud או Terraform.
gcloud
כדי לשכפל מכונה לפרויקט אחר, משתמשים בפקודה gcloud sql instances clone עם הפרמטרים --destination-project ו---destination-network:
gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \ --project=SOURCE_PROJECT_ID \ --destination-project=DESTINATION_PROJECT_ID \ --destination-network=DESTINATION_NETWORK_NAME
מחליפים את הפרטים הבאים:
- SOURCE_INSTANCE_NAME: השם של מופע Cloud SQL שרוצים לשכפל.
- DESTINATION_INSTANCE_NAME: השם של המכונה המשובטת שנוצרה. כשהפעולה מסתיימת, המשובט נמצא בפרויקט היעד.
- SOURCE_PROJECT_ID: המזהה או השם של הפרויקט שמכיל את מופע המקור.
- DESTINATION_PROJECT_ID: המזהה או השם של הפרויקט שבו רוצים שהמכונה המשוכפלת תהיה.
- DESTINATION_NETWORK_NAME: השם המוגדר במלואו של רשת הענן הווירטואלי הפרטי (VPC) בפרויקט היעד. לדוגמה,
projects/DESTINATION_PROJECT_ID/global/networks/NETWORK_NAME.
כדי להריץ את הפקודה הזו, צריכה להיות לכם הרשאת cloudsql.instances.clone בפרויקט המקור והרשאה cloudsql.instances.create בפרויקט היעד. למידע נוסף על ההרשאות הנדרשות להרצת פקודות של ה-CLI של gcloud, אפשר לעיין במאמר הרשאות Cloud SQL.
Terraform
כדי לשכפל מופע לפרויקט אחר, משתמשים במשאב של Terraform. בבלוק clone, מציינים את השדה source_project למזהה הפרויקט של מופע המקור, ומגדירים את project למזהה פרויקט היעד של המשאב.
ההגדרה לדוגמה הבאה משכפלת את המופע source-instance-name מהפרויקט source-project-id למופע my-db-clone בפרויקט destination-project-id, ומקשרת אותו לרשת dest-network בפרויקט היעד.
resource "google_sql_database_instance" "cloned_instance" { name = "my-db-clone" project = "destination-project-id" database_version = "POSTGRES_13" settings { tier = "db-custom-2-7680" ip_configuration { ipv4_enabled = false private_network = "projects/destination-project-id/global/networks/dest-network" } } clone { source_instance_name = "source-instance-name" source_project = "source-project-id" } }
החלה של השינויים
כדי להחיל את ההגדרות של 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
מגבלות
המגבלות הבאות חלות על שיבוט של מופע לפרויקט אחר:
- פעולות שיבוט מהיר בין פרויקטים נתמכות רק באותו אזור.
- Private Service Connect לא תומך בפעולות שיבוט בין פרויקטים.
- המופע המשוכפל מקבל כתובת IP פרטית חדשה ברשת היעד. כתובת ה-IP של המקור לא נשמרת.
- כברירת מחדל, כתובת ה-IP הציבורית מושבתת במופע המשוכפל.
- המשאבים והגדרות התצורה הבאים לא נשמרים עם המכונה החדשה:
- רפליקות לקריאה.
- מפתחות הצפנה בניהול הלקוח (CMEK).
- משתמשים או כללי מדיניות ב-IAM. צריך להעניק מחדש הרשאות ברמת הפרויקט בפרויקט היעד.
- גיבוי והיסטוריה של שחזור מערכת מנקודה מסוימת בזמן (PITR). אם רוצים להפעיל גיבויים במופע המשוכפל, צריך להפעיל את התכונה הזו באופן ידני. אחרי שמפעילים גיבויים במופע המשוכפל, גיבויים חדשים והיסטוריית שחזור מערכת מנקודה מסוימת בזמן (PITR) מתחילים במופע החדש.
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
השיבוט נכשל עם השגיאה 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 כתוצאה מכך, המכונה המשוכפלת נוצרת בטווח אקראי. משתמשים ב- |