בדף הזה מוסבר איך להגן על מכונות Cloud SQL מפני מחיקה בטעות.
סקירה כללית
ההגנה מפני מחיקת מכונות מאפשרת למנוע הסרה מקרית של מכונות קיימות וחדשות. באמצעות הגנה מפני מחיקה של מכונות, אתם יכולים להגן על מכונות שחשובות לאפליקציות ולשירותים שלכם.
אתם יכולים להפעיל את האפשרות "הגנה מפני מחיקה" כשאתם יוצרים מכונה. בנוסף, אפשר להפעיל את האפשרות הזו במכונה קיימת. בשני המקרים, המחיקה נמנעת ברמת המכונה. כברירת מחדל, האפשרות להגנה מפני מחיקה מושבתת, אלא אם משתמשים במסוף Google Cloud או ב-Terraform כדי ליצור מכונה.
כשמשכפלים מכונה, המכונה החדשה מקבלת את אפשרות ההגנה מפני מחיקה (מופעלת או מושבתת) ממכונת המקור.
תכנון הגנה מפני מחיקה
אם אתם מתכננים ליצור מכונה, החליטו אם אתם רוצים להגן על המכונה החדשה מפני מחיקה מקרית. לדוגמה, צריך להגן על מכונה קריטית בדרך הזו.
כדאי גם לבדוק אם יש מכונות קיימות שרוצים להגן עליהן מפני מחיקה בטעות. אם יש לכם כמה מכונות שאתם רוצים להגן עליהן, צריך להפעיל את האפשרות בכל אחת מהן.
כדאי להשתמש בהגנה מפני מחיקה של רפליקות לקריאה בלבד
כשיוצרים עותק לקריאה בלבד, הוא לא מקבל את הגדרת ההגנה מפני מחיקה מהמכונה הראשית. ההגדרה הזו נשארת עצמאית. עם זאת, אתם יכולים להפעיל הגנה מפני מחיקה ברפליקה חדשה או קיימת לקריאה בלבד.
האפשרות "הגנה מפני מחיקה" פועלת ברפליקות לקריאה של Cloud SQL באותו אופן שבו היא פועלת במכונות של Cloud SQL.
אישור ההרשאות או התפקידים הנדרשים
כדי להפעיל את האפשרות של הגנה מפני מחיקה, לחשבון השירות שמשויך למכונה של Cloud SQL צריכות להיות הרשאות או תפקידי IAM מסוימים.
הרשאות או תפקידים ליצירת מכונה
כמו בפעולות קשורות, כדי להשתמש באפשרות ההגנה מפני מחיקה צריך את ההרשאה cloudsql.instances.create או את התפקיד cloudsql.admin. לכן כשיוצרים מכונה, לא צריך הרשאות נוספות כדי להפעיל את ההגנה מפני מחיקה.
הרשאות או תפקידים לעריכת מכונה
כמו בפעולות קשורות, כדי לשנות את ההגנה מפני מחיקה צריך את ההרשאה cloudsql.instances.update או את התפקיד cloudsql.editor. לכן, כשעורכים מכונה כדי להפעיל הגנה מפני מחיקה, לא נדרשות הרשאות נוספות.
תכנון מחיקה של מכונה
אם אתם מתכננים למחוק מכונה, קודם צריך לבצע את הפעולות הבאות:
- אישור שאפשר למחוק את המכונה באופן בטוח
- מוודאים שההגנה מפני מחיקה מושבתת. אם צריך, עורכים את המכונה כדי להשבית את ההגנה מפני מחיקה.
המגבלות של ההגנה מפני מחיקה
הגנה מפני מחיקה במכונה לא מונעת:
- עצירת המכונה
- הפעלה מחדש של המכונה
- עריכת המכונה
- מחיקת גיבוי
- השעיית המכונה בגלל בעיות בחיוב
- מחיקת המכונה המושעית בגלל בעיות בחיוב
- מחיקת המכונה בגלל מחיקת הפרויקט
הפעלת ההגנה מפני מחיקה במכונה חדשה
אפשר להפעיל את ההגנה מפני מחיקה בדרכים הבאות. כברירת מחדל, האפשרות להגנה מפני מחיקה מושבתת, אלא אם משתמשים במסוף Google Cloud או ב-Terraform כדי ליצור מכונה.
אם ההגנה מפני מחיקה מופעלת, ניסיון למחוק את המכונה ייכשל.
המסוף
- פועלים לפי השלבים כדי להתחיל ליצור מכונה.
- בקטע Customize your instance, מרחיבים את Show configuration options.
- מרחיבים את הקטע הגנה על נתונים.
- בקטע הגנה על נתונים, מוודאים שתיבת הסימון Prevent instance deletion מסומנת.
- בוחרים אפשרויות הגדרה אחרות לפי הצורך של המכונה.
- לוחצים על Create instance.
gcloud
כדי להפעיל את ההגנה מפני מחיקה בזמן יצירת המכונה, משתמשים בפקודה gcloud sql instances create, באופן דומה לפקודה הבאה:
gcloud sql instances create INSTANCE_NAME \ --deletion-protection
REST v1
כדי להפעיל את ההגנה מפני מחיקה כשיוצרים מכונה, מציינים את הערך true בשדה deletionProtection.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה הרצוי
- database-version: גרסת מסד הנתונים
- region: האזור הרצוי
- machine-type: סוג המכונה הרצוי
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
תוכן בקשת JSON:
{
"name": "instance-id",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"deletionProtectionEnabled": true
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2022-05-24T15:34:10.929Z",
"operationType": "CREATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
REST v1beta4
כדי להפעיל את ההגנה מפני מחיקה כשיוצרים מכונה, מציינים את הערך true בשדה deletionProtection.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה הרצוי
- database-version: גרסת מסד הנתונים
- region: האזור הרצוי
- machine-type: סוג המכונה הרצוי
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances
תוכן בקשת JSON:
{
"name": "instance-id",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"deletionProtectionEnabled": true
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2022-05-26T15:37:10.929Z",
"operationType": "CREATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
הפעלה או השבתה של ההגנה מפני מחיקה במכונה קיימת
אלה הדרכים לערוך מכונה כדי להפעיל הגנה מפני מחיקה. אם מפעילים את האפשרות, הניסיון הבא למחוק את המכונה ייכשל.
המסוף
- פועלים לפי השלבים כדי להתחיל לערוך מכונה.
- אחרי שלוחצים על Edit, מאתרים את הקטע Customize your instance ומרחיבים את Show configuration options.
- מרחיבים את הקטע הגנה על נתונים.
- בקטע הגנה על נתונים, מסמנים את התיבה Prevent instance deletion או מבטלים את הסימון שלה.
- עורכים את אפשרויות ההגדרה האחרות לפי הצורך.
- לוחצים על Save.
gcloud
כדי להפעיל את ההגנה מפני מחיקה כשמעדכנים מכונה, משתמשים בפקודה gcloud sql instances patch, באופן דומה לדוגמה הבאה:
gcloud sql instances patch INSTANCE_NAME \ --deletion-protection
כדי להשבית את ההגנה מפני מחיקה כשמעדכנים מכונה, משתמשים בפקודה gcloud sql instances patch, באופן דומה לדוגמה הבאה:
gcloud sql instances patch INSTANCE_NAME \ --no-deletion-protection
REST v1
כדי להפעיל את ההגנה מפני מחיקה כשמעדכנים מכונה, מציינים את הערך true בשדה deletionProtection. כדי להסיר את ההגנה מפני מחיקה, מציינים false בשדה הזה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה הרצוי
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings": {
"deletionProtectionEnabled": true
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2022-06-1T03:42:12.281Z",
"operationType": "CREATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
REST v1beta4
כדי להפעיל את ההגנה מפני מחיקה כשמעדכנים מכונה, מציינים את הערך true בשדה deletionProtection. כדי להסיר את ההגנה מפני מחיקה, מציינים false בשדה הזה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה הרצוי
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings": {
"deletionProtectionEnabled": true
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2022-06-1T03:32:12.281Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}