כשיוצרים מופע חדש ב Google Cloud מסוף, גיבויים אוטומטיים ושחזור לנקודת זמן (PITR) מופעלים אוטומטית. כדי להגדיר PITR לכל מופע קיים, מבצעים את הפעולות הבאות:
- הפעלת PITR
- השבתת PITR
- הגדרת שמירה של יומני טרנזקציות
- בדיקת מיקום האחסון של יומני העסקאות שמשמשים לשחזור לנקודת זמן (PITR)
הפעלת PITR
כשיוצרים מופע חדש ב Google Cloud מסוף, האפשרויות גיבויים אוטומטיים והפעלת שחזור מערכת מנקודה מסוימת בזמן (PITR) מופעלות אוטומטית.התהליך הבא מפעיל PITR במופע ראשי קיים.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את תפריט הפעולות הנוספות
של המכונה שרוצים להפעיל בה PITR ולוחצים על Edit (עריכה). - בקטע Customize your instance (התאמה אישית של המופע), מרחיבים את הקטע Data Protection (הגנה על נתונים).
- מסמנים את התיבה הפעלת שחזור לנקודת זמן מסוימת.
- בשדה Days of logs, מזינים את מספר הימים לשמירת היומנים, בין 1 ל-35 למהדורת Cloud SQL Enterprise Plus, או בין 1 ל-7 למהדורת Cloud SQL Enterprise.
- לוחצים על Save.
gcloud
- מציגים את הסקירה הכללית של המופע:
gcloud sql instances describe INSTANCE_NAME
- אם אתם רואים את
enabled: falseבקטעbackupConfiguration, צריך להפעיל גיבויים מתוזמנים:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
מציינים את הפרמטר
backup-start-timeבאמצעות שעה בפורמט של 24 שעות באזור הזמן UTC±00. - הפעלת PITR:
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
אם מפעילים PITR במופע ראשי, אפשר גם להגדיר את מספר הימים שבהם רוצים לשמור את יומני העסקאות על ידי הוספת הפרמטר הבא:
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS - מאשרים את השינוי:
gcloud sql instances describe INSTANCE_NAME
בקטע
backupConfiguration, יופיעpointInTimeRecoveryEnabled: trueאם השינוי בוצע בהצלחה.
Terraform
כדי להפעיל PITR, משתמשים במשאב של 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 הפרויקט שמכיל את המופע
- INSTANCE_NAME: השם של המופע הראשי או של העותק לקריאה שאתם מגדירים עבור זמינות גבוהה
- START_TIME: השעה (בדקות ושעות)
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
תוכן בקשת JSON:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את המופע
- INSTANCE_NAME: השם של המופע הראשי או של העותק לקריאה שאתם מגדירים עבור זמינות גבוהה
- START_TIME: השעה (בדקות ושעות)
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
תוכן בקשת JSON:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
השבתת PITR
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את תפריט האפשרויות הנוספות
של המופע שרוצים להשבית ובוחרים באפשרות עריכה. - בקטע Customize your instance (התאמה אישית של המופע), מרחיבים את הקטע Data Protection (הגנה על נתונים).
- מבטלים את הסימון של הפעלת שחזור מערכת מנקודה מסוימת בזמן.
- לוחצים על Save.
gcloud
- כדי להשבית את שחזור מערכת מנקודה מסוימת בזמן (PITR):
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- מאשרים את השינוי:
gcloud sql instances describe INSTANCE_NAME
בקטע
backupConfiguration, יופיעpointInTimeRecoveryEnabled: falseאם השינוי בוצע בהצלחה.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
הגדרת תקופת השמירה של יומן העסקאות
כדי להגדיר את מספר הימים לשמירת יומני כתיבה מראש:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את תפריט הפעולות הנוספות
של המופע שרוצים להגדיר בו את יומן העסקאות ובוחרים באפשרות עריכה. - בקטע Customize your instance (התאמה אישית של המופע), מרחיבים את הקטע Data Protection (הגנה על נתונים).
- בקטע הפעלת שחזור מערכת מנקודה מסוימת בזמן (PITR), מרחיבים את האפשרויות המתקדמות.
- מזינים את מספר הימים לשמירת היומנים, בין 1 ל-35 במהדורת Cloud SQL Enterprise Plus או בין 1 ל-7 במהדורת Cloud SQL Enterprise.
- לוחצים על Save.
gcloud
עורכים את המופע כדי להגדיר את מספר הימים לשמירת יומני הרישום מראש.
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_NAME: השם של המופע שרוצים להגדיר בו את יומן העסקאות.
DAYS_TO_RETAIN: מספר הימים שבהם יומני הטרנזקציות יישמרו. במהדורת Cloud SQL Enterprise Plus, הטווח התקף הוא בין יום אחד ל-35 ימים, עם ברירת מחדל של 14 ימים. במהדורת Cloud SQL Enterprise, הטווח התקין הוא בין יום אחד ל-7 ימים, וערך ברירת המחדל הוא 7 ימים.
אם לא מציינים ערך, Cloud SQL משתמש בערך ברירת המחדל. האפשרות הזו תקפה רק אם PITR מופעל. כדי לשמור יומני עסקאות של יותר ימים, צריך נפח אחסון גדול יותר.
gcloud sql instances patch INSTANCE_NAME
--retained-transaction-log-days=DAYS_TO_RETAIN
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
DAYS_TO_RETAIN: מספר הימים לשמירת יומני הטרנזקציות. במהדורת Cloud SQL Enterprise Plus, הטווח התקין הוא בין יום אחד ל-35 ימים, וערך ברירת המחדל הוא 14 ימים. במהדורת Cloud SQL Enterprise, הטווח התקף הוא בין יום אחד ל-7 ימים, וערך ברירת המחדל הוא 7 ימים.
אם לא תציינו ערך, נשתמש בערך ברירת המחדל. האפשרות הזו תקפה רק אם PITR מופעל. כדי לשמור יומני עסקאות של יותר ימים, צריך נפח אחסון גדול יותר.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
תוכן בקשת JSON:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
DAYS_TO_RETAIN: מספר הימים לשמירת יומני הטרנזקציות. במהדורת Cloud SQL Enterprise Plus, הטווח התקין הוא בין יום אחד ל-35 ימים, וערך ברירת המחדל הוא 14 ימים. במהדורת Cloud SQL Enterprise, הטווח התקף הוא בין יום אחד ל-7 ימים, וערך ברירת המחדל הוא 7 ימים.
אם לא תציינו ערך, נשתמש בערך ברירת המחדל. האפשרות הזו תקפה רק אם PITR מופעל. כדי לשמור יומני עסקאות של יותר ימים, צריך נפח אחסון גדול יותר.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
תוכן בקשת JSON:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
בדיקת מיקום האחסון של יומני העסקאות שמשמשים לשחזור לנקודת זמן
אפשר לבדוק איפה מכונת Cloud SQL מאחסנת את יומני העסקאות שמשמשים לשחזור לנקודת זמן.
gcloud
כדי לקבוע אם המכונה שלכם מאחסנת יומנים ל-PITR בדיסק או ב-Cloud Storage, משתמשים בפקודה הבאה:
gcloud sql instances describe INSTANCE_NAME
מחליפים את INSTANCE_NAME בשם המכונה.
אם יש כמה מופעים באותו פרויקט, אפשר גם לבדוק את מיקום האחסון של יומני העסקאות. כדי לקבוע את המיקום של כמה מכונות, משתמשים בפקודה הבאה:
gcloud sql instances list --show-transactional-log-storage-state
דוגמה לתגובה:
NAME DATABASE_VERSION LOCATION TRANSACTIONAL_LOG_STORAGE_STATE my_01 POSTGRES_12 us-central-1 DISK my_02 POSTGRES_12 us-central-1 CLOUD_STORAGE ...
בפלט של הפקודה, השדה transactionalLogStorageState
או העמודה TRANSACTIONAL_LOG_STORAGE_STATE מספקים מידע על המקום שבו נשמרים יומני העסקאות של PITR עבור המופע.
אלו הם מצבי האחסון האפשריים של יומן הטרנזקציות:
-
DISK: המידע הזה מציין שהמכונה מאחסנת בדיסק את יומני הטרנזקציות שמשמשים ל-PITR. אם משדרגים מופע של Cloud SQL Enterprise למופע של Cloud SQL Enterprise Plus, תהליך השדרוג מעביר את מיקום אחסון היומנים ל-Cloud Storage באופן אוטומטי. מידע נוסף מופיע במאמר בנושא שדרוג מופע למהדורת Cloud SQL Enterprise Plus באמצעות שדרוג במקום. אפשר גם להחליף את מיקום האחסון באמצעות ה-CLI של gcloud או Cloud SQL Admin API בלי לשדרג את מהדורת המופע ובלי לגרום להשבתה. מידע נוסף זמין במאמר בנושא מעבר לאחסון יומני טרנזקציות ב-Cloud Storage. -
SWITCHING_TO_CLOUD_STORAGE: המופע מעביר את מיקום האחסון של יומני העסקאות של PITR ל-Cloud Storage. -
SWITCHED_TO_CLOUD_STORAGE: המופע סיים את המעבר של מיקום האחסון של יומני העסקאות של PITR מדיסק ל-Cloud Storage. -
CLOUD_STORAGE: המופע מאחסן את יומני הטרנזקציות שמשמשים ל-PITR ב-Cloud Storage.
העברת האחסון של יומן העסקאות ל-Cloud Storage
אם המופע שלכם מאחסן את יומני העסקאות שמשמשים ל-PITR בדיסק, אתם יכולים להעביר את מיקום האחסון ל-Cloud Storage בלי לגרום להשבתה. התהליך הכולל של שינוי מיקום האחסון נמשך בערך כמו משך תקופת השמירה של יומן העסקאות (ימים). ברגע שתתחילו את המעבר, יומני העסקאות יתחילו להצטבר ב-Cloud Storage. במהלך הפעולה, אפשר לבדוק את הסטטוס של התהליך הכולל באמצעות הפקודה שמוסברת במאמר בדיקת מיקום האחסון של יומני העסקאות שמשמשים לשחזור לנקודת זמן.
אחרי שהתהליך הכולל של המעבר ל-Cloud Storage מסתיים, Cloud SQL משתמש ביומני טרנזקציות מ-Cloud Storage ל-PITR.
gcloud
כדי להעביר את מיקום האחסון ל-Cloud Storage, משתמשים בפקודה הבאה:
gcloud sql instances patch INSTANCE_NAME \ --switch-transaction-logs-to-cloud-storage
מחליפים את INSTANCE_NAME בשם המכונה. המכונה צריכה להיות מכונה ראשית ולא מכונת העתקה. התגובה אמורה להיראות כך:
The following message is used for the patch API method.
{"name": "INSTANCE_NAME", "project": "PROJECT_NAME", "switchTransactionalLogsToCloudStorageEnabled": "true"}
Patching Cloud SQL instance...done.
Updated
[https://sqladmin.prod.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME].
אם הפקודה מחזירה שגיאה, אפשר לעיין בפתרון בעיות במעבר ל-Cloud Storage כדי לקבל מידע על השלבים הבאים האפשריים.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה. המכונה צריכה להיות מכונה ראשית ולא מכונת העתקה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
תוכן בקשת JSON:
{
"switchTransactionLogsToCloudStorageEnabled": true
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
אם הבקשה מחזירה שגיאה, אפשר לעיין בפתרון בעיות במעבר ל-Cloud Storage כדי לקבל מידע על השלבים הבאים האפשריים.
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה. המכונה צריכה להיות מכונה ראשית ולא מכונת העתקה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
תוכן בקשת JSON:
{
"switchTransactionLogsToCloudStorageEnabled": true
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
אם הבקשה מחזירה שגיאה, אפשר לעיין בפתרון בעיות במעבר ל-Cloud Storage כדי לקבל מידע על השלבים הבאים האפשריים.
פתרון בעיות במעבר ל-Cloud Storage
בטבלה הבאה מפורטות שגיאות אפשריות שיכולות לחזור עם קוד INVALID REQUEST כשמעבירים את מיקום האחסון של יומני העסקאות מדיסק ל-Cloud Storage.
| שגיאה | פתרון בעיות |
|---|---|
Switching the storage location of the transaction logs
used for PITR is not supported for instances with database type %s.
|
מוודאים שמריצים את הפקודה ה-CLI של gcloud או שולחים את בקשת ה-API במופע Cloud SQL ל-MySQL או Cloud SQL ל-PostgreSQL. אי אפשר להחליף את מיקום האחסון של יומני העסקאות באמצעות ה-CLI של gcloud או Cloud SQL Admin API ב-Cloud SQL ל-SQL Server. |
PostgreSQL transactional logging is not enabled on this instance.
|
PostgreSQL משתמש בכתיבה מראש ביומן (WAL) כיומני העסקאות לצורך שחזור מערכת מנקודה מסוימת בזמן (PITR). כדי לתמוך ב-PITR, PostgreSQL דורש הפעלה של כתיבה מראש ביומן (WAL) במופע. מידע נוסף על הפעלת רישום מראש של פעולות (WAL) זמין במאמר הפעלת PITR. |
This instance is already storing transaction logs used for PITR in
Cloud Storage
|
כדי לוודא את מיקום האחסון של יומני הטרנזקציות, מריצים את הפקודה שמופיעה בקטע בדיקת מיקום האחסון של יומני הטרנזקציות שמשמשים לשחזור לנקודת זמן. |
The instance is already switching transaction logs used for PITR from disk
to Cloud Storage.
|
ממתינים לסיום פעולת המעבר. כדי לוודא את סטטוס הפעולה ואת מיקום האחסון של יומני הטרנזקציות, מריצים את הפקודה שבקטע בדיקת מיקום האחסון של יומני הטרנזקציות שמשמשים לשחזור לנקודת זמן. |
המאמרים הבאים
- הגדרת דיווחים על השיבוט