שחזור מערכת מנקודה מסוימת בזמן (PITR) מאפשר לשחזר מכונה של Cloud SQL לנקודה מסוימת בזמן. כך תוכלו לשחזר נתונים שאבדו ולבטל שינויים לא מכוונים או פגיעה בנתונים.
כדי להשתמש ב-PITR צריך להפעיל גיבויים אוטומטיים. כדי להגדיר PITR במכונה קיימת, צריך להפעיל או להשבית את התכונה ולשנות את משך השמירה של יומן הטרנזקציות.
לפני שמתחילים
לפני שמתחילים, חשוב לבדוק את הפרטים הבאים:
- אם מפעילים את PITR במכונה קיימת, המכונה מופעלת מחדש.
- כשיוצרים מכונה של Cloud SQL Enterprise במסוף Google Cloud , האפשרות PITR מופעלת כברירת מחדל. אם אתם משתמשים ב-CLI של gcloud, ב-Terraform או ב-Cloud SQL Admin API ואתם רוצים להפעיל את התכונה, אתם צריכים לעשות את זה באופן ידני.
- כשיוצרים מכונה של מהדורת Cloud SQL Enterprise Plus, התכונה PITR מופעלת כברירת מחדל, בלי קשר לשיטה שבה משתמשים. אם רוצים להשבית את התכונה, צריך לעשות את זה באופן ידני.
- הגיבויים האוטומטיים מופעלים כברירת מחדל כשיוצרים מכון במסוף Google Cloud . אם אתם משתמשים ב-CLI של gcloud, ב-Terraform או ב-Cloud SQL Admin API, אתם צריכים להפעיל את התכונה באופן ידני.
חשוב לוודא שלכל מסדי הנתונים במכונה של Cloud SQL ל-SQL Server יש שמות קבצים פיזיים ייחודיים בדיסק הנתונים. מידע נוסף זמין במאמר קבצים לוגיים ופיזיים. כדי לזהות את זה, מריצים את שאילתת ה-T-SQL הבאה:
SELECT d.name AS DatabaseName, mf.physical_name FROM sys.master_files mf JOIN sys.databases d ON mf.database_id = d.database_id WHERE mf.type = 0 AND mf.file_id = 1;אם השאילתה מחזירה שני מסדי נתונים או יותר עם אותו ערך בשדה
physical_name, מבצעים את השלבים הבאים:- אם PITR מופעל במכונה, משביתים אותו.
- מייצאים את קובץ ה-BAK שמשויך לכל מסד נתונים מושפע.
- מוחקים כל מסד נתונים מושפע במכונה של Cloud SQL ל-SQL Server.
- מייבאים את קובץ ה-BAK שמשויך לכל מסד נתונים מושפע.
- מפעילים מחדש את ה-PITR במכונה.
הפעלת PITR
התהליך הבא מפעיל את PITR במכונה ראשית קיימת.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את תפריט הפעולות הנוספות
של המכונה שרוצים להפעיל בה PITR ולוחצים על Edit. - בקטע Customize your instance, מרחיבים את הקטע הגנה על נתונים.
- מסמנים את התיבה Enable point-in-time recovery.
- בשדה 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.
הפעלת PITR במהדורת Cloud SQL Enterprise Plus
כדי ליצור מכונה של מהדורת Cloud SQL Enterprise Plus עם PITR, משתמשים בדוגמת הקוד הבאה ב-Terraform:הפעלת PITR במהדורת Cloud SQL Enterprise
כדי ליצור מכונה של Cloud SQL Enterprise Edition עם PITR, משתמשים בדוגמת הקוד הבאה ב-Terraform:החלה של השינויים
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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 .
- פותחים את תפריט הפעולות הנוספות
של המכונה שרוצים להשבית ובוחרים באפשרות Edit. - בקטע Customize your instance, מרחיבים את הקטע הגנה על נתונים.
- מבטלים את הסימון של Enable point-in-time recovery.
- לוחצים על 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 .
- פותחים את תפריט הפעולות הנוספות
של המכונה שבה רוצים להגדיר את יומן העסקאות ובוחרים באפשרות Edit. - בקטע Customize your instance, מרחיבים את הקטע הגנה על נתונים.
- בקטע Enable point-in-time recovery, מרחיבים את Advanced options.
- מזינים את מספר הימים לשמירת היומנים: 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 שדומה לזו:
בדיקת מיקום האחסון של יומני העסקאות שמשמשים ל-PITR
אתם יכולים לבדוק איפה מאוחסנים יומני העסקאות של מכונת Cloud SQL שמשמשים ל-PITR.
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 SQLSERVER_2019_STANDARD us-central-1 DISK my_02 SQLSERVER_2019_STANDARD us-central-1 CLOUD_STORAGE ...
בפלט של הפקודה, השדה transactionalLogStorageState או העמודה TRANSACTIONAL_LOG_STORAGE_STATE מספקים מידע על המקום שבו מאוחסנים יומני הטרנזקציות של ה-PITR במכונה.
אלה מצבי האחסון האפשריים של יומן הטרנזקציות:
-
DISK: המכונה שומרת בדיסק את יומני הטרנזקציות שמשמשים ל-PITR. -
CLOUD_STORAGE: המכונה שומרת את יומני הטרנזקציות שמשמשים ל-PITR ב-Cloud Storage.
המאמרים הבאים
- מגדירים דגלים בעותק המשוכפל