ביצוע שחזור מנקודה מסוימת בזמן (PITR)

אתם יכולים להשתמש בשחזור לנקודת זמן (PITR) כדי לשחזר את המכונות הראשיות של Cloud SQL, בין אם המכונה פעילה או נמחקה. שחזור מנקודה בזמן (PITR) מאפשר לשחזר את המופע לנקודה מסוימת בזמן. אם מוחקים מופע, אפשר לשחזר אותו לנקודת זמן ספציפית למופע חדש או קיים.

ב-Cloud SQL יש את האפשרויות הבאות לשחזור המכונה באמצעות PITR:

כדי לבצע PITR במופע לא זמין או במופע שנמחק, צריך למצוא את זמן השחזור המוקדם והמאוחר ביותר.

ביצוע שחזור לנקודת זמן באמצעות חותמת זמן

הגישה המומלצת לביצוע PITR היא שימוש בחותמת זמן. ב-Cloud SQL נעשה שימוש בכלי השירות mysqlbinlog כדי לשחזר מופעים עד לזמן ספציפי. מידע נוסף על כלי השירות mysqlbinlog זמין במאמרי העזרה של MySQL.

כדי לבצע את המשימה הבאה, אתם צריכים:

  • הפעלת גיבויים ורישום ביומן בינארי עבור המופע, עם יומנים בינאריים רציפים מאז הגיבוי האחרון לפני האירוע שממנו רוצים לשחזר. מידע נוסף זמין במאמר בנושא הפעלת רישום בינארי ביומן.
  • חותמת זמן להגדרת נקודת השחזור. האירועים שמתרחשים בשעה הזו ואחריה לא משתקפים במופע החדש.

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. פותחים את תפריט הפעולות הנוספות סמל האפשרויות הנוספות. של המכונה שרוצים לשחזר ולוחצים על Create clone.
  3. אופציונלי: בדף יצירת שיבוט, מעדכנים את המזהה של השיבוט החדש.
  4. בוחרים באפשרות Clone from an earlier point in time (שיבוט מנקודה מוקדמת יותר בזמן).
  5. מזינים את השעה של ה-PITR.
  6. לוחצים על יצירת שיבוט.

gcloud

יצירת שיבוט באמצעות PITR.

מחליפים את מה שכתוב בשדות הבאים:

  • SOURCE_INSTANCE_NAME – השם של המכונה שמשחזרים ממנה.
  • NEW_INSTANCE_NAME – שם השכפול.
  • TIMESTAMP – אזור הזמן UTC של מופע המקור בפורמט RFC 3339. לדוגמה: ‏2012-11-15T16:19:00.094Z.
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time 'TIMESTAMP'

REST v1

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • target-instance-id: מזהה מכונת היעד
  • source-instance-id: מזהה מופע המקור
  • restore-timestamp הנקודה בזמן לשחזור עד אליה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • target-instance-id: מזהה מכונת היעד
  • source-instance-id: מזהה מופע המקור
  • restore-timestamp הנקודה בזמן לשחזור עד אליה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "pointInTime": "restore-timestamp"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

ביצוע PITR באמצעות כספת הגיבוי

אם במכונה שלכם ב-Cloud SQL מופעלת האפשרות גיבויים משופרים, תוכלו לבצע שחזור לנקודת זמן מסוימת במכונה באמצעות מאגר הגיבויים.

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. פותחים את תפריט הפעולות הנוספות סמל האפשרויות הנוספות. של המכונה שרוצים לשחזר ולוחצים על Create clone.

  3. בוחרים באפשרות Clone from an earlier point in time (שיבוט מנקודה מוקדמת יותר בזמן).

  4. מזינים את השעה של ה-PITR.

  5. לוחצים על יצירת שיבוט.

gcloud

כדי לבצע PITR במכונה מכספת הגיבוי, צריך למצוא את data-source של הגיבוי שהכי קרוב לזמן שבו רוצים לבצע את ה-PITR. כדי למצוא את הגיבוי, אפשר לעיין במאמר בנושא הצגת כל הגיבויים בכספת הגיבוי של מופע. אחרי שמזהים את הגיבוי, מריצים את הפקודה הבאה כדי לבצע את השחזור לנקודת זמן:

  gcloud sql instances point-in-time-restore DATA_SOURCE TARGET_INSTANCE_NAME PITR_TIMESTAMP \
  --project=TARGET_PROJECT \
  --region=REGION

מחליפים את מה שכתוב בשדות הבאים:

  • DATA_SOURCE: הנתיב של data-source למופע המקור, שהכי קרוב לחותמת הזמן של PITR שרוצים לשחזר.
  • TARGET_INSTANCE_NAME: השם של המופע החדש שנוצר על ידי פעולת PITR.
  • PITR_TIMESTAMP: חותמת הזמן לפי שעון UTC של יומן ה-PITR של מופע המקור שרוצים לשחזר את המופע ממנו, בפורמט RFC 3339. לדוגמה, 2025-11-15T16:19:00.094Z.
  • TARGET_PROJECT: מזהה הפרויקט של המופע החדש.
  • REGION: האזור של מכונת היעד. השדה הזה נדרש אם מקור הנתונים של מופע המקור ממוקם במספר אזורים. האזור של מופע היעד צריך להיות זהה לאזור של מופע המקור.

REST v1

כדי לבצע שחזור לנקודת זמן מסוימת באמצעות מקור נתונים ממאגר הגיבוי, משתמשים בשיטה instances.pointInTimeRestore עם בקשת POST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המופע החדש.
  • DATASOURCE: מקור הנתונים של Backup and DR שבו השירות ישתמש לפעולת השחזור לנקודת זמן מסוימת.
  • PITR_TIMESTAMP: חותמת הזמן לפי שעון UTC של יומן ה-PITR של מופע המקור שרוצים לשחזר את המופע אליו, בפורמט RFC 3339. לדוגמה: ‏2012-11-15T16:19:00.094Z.
  • TARGET_INSTANCE_NAME: השם של המכונה שנוצרה על ידי פעולת ה-PITR.
  • REGION: האזור של מכונת היעד. השדה הזה נדרש אם מקור הנתונים של מופע המקור ממוקם במספר אזורים. האזור של מופע היעד צריך להיות זהה לאזור של מופע המקור.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID:pointInTimeRestore

תוכן בקשת JSON:

{
  "datasource": "DATASOURCE",
  "pointInTime": "PITR_TIMESTAMP",
  "targetInstanceName": "TARGET_INSTANCE_NAME",
  "region": "REGION"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

כדי לבצע שחזור לנקודת זמן מסוימת באמצעות מקור נתונים ממאגר הגיבוי, משתמשים בשיטה instances.pointInTimeRestore עם בקשת POST.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את המופע החדש.
  • DATASOURCE: מקור הנתונים של Backup and DR שבו השירות ישתמש לפעולת השחזור לנקודת זמן מסוימת.
  • PITR_TIMESTAMP: חותמת הזמן לפי שעון UTC של יומן ה-PITR של מופע המקור שרוצים לשחזר את המופע אליו, בפורמט RFC 3339. לדוגמה: ‏2012-11-15T16:19:00.094Z.
  • TARGET_INSTANCE_NAME: השם של המכונה שנוצרה על ידי פעולת ה-PITR.
  • REGION: האזור של מכונת היעד. השדה הזה נדרש אם מקור הנתונים של מופע המקור ממוקם במספר אזורים. האזור של מופע היעד צריך להיות זהה לאזור של מופע המקור.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID:pointInTimeRestore

תוכן בקשת JSON:

{
  "datasource": "DATASOURCE",
  "pointInTime": "PITR_TIMESTAMP",
  "targetInstanceName": "TARGET_INSTANCE_NAME",
  "region": "REGION"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

ביצוע שחזור לנקודת זמן (PITR) בין פרויקטים

בעזרת גיבויים משופרים, אפשר לשחזר מכונת Cloud SQL לפרויקט אחר, לא לפרויקט שבו נמצאת מכונת המקור או כספת הגיבוי.

שחזור PITR בין פרויקטים נתמך רק באמצעות ה-CLI של gcloud וממשקי API בארכיטקטורת REST.

כדי לבצע שחזור לנקודת זמן בפרויקט אחר, צריך לבצע אחת מהפעולות הבאות:

  • אם אתם משתמשים ב-CLI של gcloud, מגדירים את הדגל --project לפרויקט שבו רוצים ליצור את מכונת היעד.

  • אם משתמשים בממשקי REST API, צריך להגדיר את השדה PROJECT_ID לפרויקט שבו רוצים ליצור את מופע היעד.

ביצוע PITR במופע שלא זמין

המסוף

יכול להיות שתרצו לשחזר מופע שלא זמין לאזור אחר מהסיבות הבאות:

  • לא ניתן לגשת לאזור שבו המופע מוגדר. למופע הזה יש מצב FAILED.
  • המכונה עוברת תחזוקה. למופע הזה יש מצב MAINTENANCE.

כדי לשחזר מופע שלא זמין, מבצעים את השלבים הבאים:

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. מוצאים את השורה של המופע שרוצים לשכפל.
  3. בעמודה פעולות, לוחצים על התפריט עוד פעולות.
  4. לוחצים על יצירת שיבוט.
  5. בדף Create a clone, מבצעים את הפעולות הבאות:
    1. בשדה Instance ID (מזהה מופע), מעדכנים את מזהה המופע אם צריך.
    2. לוחצים על Clone from an earlier point in time (שיבוט מנקודת זמן קודמת).
    3. בשדה Point in time (נקודה בזמן), בוחרים תאריך ושעה שממנה רוצים לשכפל את הנתונים. הפעולה הזו משחזרת את מצב המופע מאותה נקודה בזמן.
    4. לוחצים על יצירת שיבוט.
  6. בזמן שהשיבוט מתבצע, אתם מועברים חזרה לדף רשימת המופעים.

gcloud

יכול להיות שתרצו לשחזר אינסטנס שלא זמין לאזור אחר כי לא ניתן לגשת לאזור שבו האינסטנס מוגדר.

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--point-in-time DATE_AND_TIME_STAMP \
--preferred-zone ZONE_NAME \
--preferred-secondary-zone SECONDARY_ZONE_NAME

למשתמש או לחשבון השירות שמריצים את הפקודה gcloud sql instances clone צריכה להיות ההרשאה cloudsql.instances.clone. מידע נוסף על ההרשאות הנדרשות להרצת פקודות של ה-CLI של gcloud זמין במאמר הרשאות Cloud SQL.

REST v1

יכול להיות שתרצו לשחזר מופע שלא זמין לאזור אחר כי אין גישה לאזור שבו המופע מוגדר.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • SOURCE_INSTANCE_ID: מזהה מכונת המקור
  • TARGET_INSTANCE_ID: מזהה מכונת היעד

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_ID"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

למשתמש או לחשבון השירות שמשתמשים ב-method של instances.clone API צריכה להיות ההרשאה cloudsql.instances.clone. מידע נוסף על ההרשאות הנדרשות לשימוש בשיטות API זמין במאמר הרשאות Cloud SQL.

REST v1beta4

יכול להיות שתרצו לשחזר מופע שלא זמין לאזור אחר כי אין גישה לאזור שבו המופע מוגדר.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • SOURCE_INSTANCE_ID: מזהה מכונת המקור
  • TARGET_INSTANCE_ID: מזהה מכונת היעד

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_ID"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

למשתמש או לחשבון השירות שמשתמשים ב-method של instances.clone API צריכה להיות ההרשאה cloudsql.instances.clone. מידע נוסף על ההרשאות הנדרשות לשימוש בשיטות API זמין במאמר הרשאות Cloud SQL.

אם תנסו ליצור שיבוט PITR בזמן שאחרי הזמן האחרון שאפשר לשחזר ממנו, תוצג הודעת השגיאה הבאה:

The timestamp for point-in-time recovery is after the latest recovery time of
Timestamp of latest recovery time. Clone the instance with a time
that's earlier than this recovery time.

ביצוע PITR במופע שנמחק

כדי להשתמש ב-PITR לשחזור מופע שנמחק, צריך:

  • חותמת הזמן של PITR‏ (timestamp) שאליה רוצים לשחזר את המופע
  • שם מופע היעד
  • השעה שבה המופע של מקור המודעות נמחק (source-instance-deletion-time)

אפשר להשתמש ב-PITR במכונה שנמחקה רק באמצעות ה-CLI של gcloud או Cloud SQL API. מידע נוסף מופיע במאמר בנושא שחזור מופע שנמחק באמצעות PITR.

gcloud

גיבוי רגיל

איך מוצאים את חלון הזמן של PITR

כדי לראות את חלון ה-PITR של המכונה שנמחקה, צריך לקבל את זמן השחזור המוקדם והמאוחר ביותר של המכונה. אתם יכולים לבחור חותמת זמן בכל שלב בחלון הזה כדי לבצע שחזור לנקודת זמן.

חיפוש מחיקה של מופע של מקור

הנתונים source-instance-deletion-time ו-log-retention-days של המופע שנמחק מאוחסנים עם הגיבויים שנשמרו של המופע אחרי המחיקה. כדי לראות רשימה של כל הגיבויים הזמינים של המופע שנמחק, אפשר לעיין במאמר בנושא רשימת גיבויים שנשמרו.

אחרי שמזהים את הגיבוי שרוצים להשתמש בו, משתמשים בפקודה gcloud sql backups describe כדי לקבל את source-instance-deletion-time.

שחזור באמצעות PITR

כדי לשחזר את המכונה שנמחקה באמצעות PITR, מריצים את הפקודה הבאה:

gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time='PITR_TIMESTAMP' \
--source-instance-deletion-time=SOURCE_INSTANCE_DELETION_TIMESTAMP

מחליפים את מה שכתוב בשדות הבאים:

  • SOURCE_INSTANCE_NAME: השם של מופע המקור שרוצים לשחזר.
  • NEW_INSTANCE_NAME: השם של המכונה החדשה.
  • PITR_TIMESTAMP: חותמת הזמן לפי שעון UTC של יומן ה-PITR של מופע המקור שרוצים לשחזר את המופע ממנו, בפורמט RFC 3339. לדוגמה: 2012-11-15T16:19:00.094Z.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: חותמת הזמן לפי שעון UTC של הזמן שבו מופע המקור נמחק, בפורמט RFC 3339. לדוגמה: ‏2012-11-15T16:19:00.094Z.

גיבוי משופר

איך מוצאים את חלון הזמן של PITR

כדי לראות את חלון ה-PITR של המכונה שנמחקה, צריך לקבל את זמן השחזור המוקדם והמאוחר ביותר של המכונה. אתם יכולים לבחור חותמת זמן בכל שלב בחלון הזה כדי לבצע שחזור לנקודת זמן.

חיפוש מקור הנתונים

מקור הנתונים של המופע שנמחק מאוחסן בגיבויים שנשמרו של המופע אחרי המחיקה. כדי למצוא את הערכים האלה עבור המופע שנמחק, אפשר לעיין במאמר בנושא רשימת כל הגיבויים בכספת הגיבויים של המופע.

שחזור באמצעות PITR

כדי לשחזר את המכונה שנמחקה באמצעות PITR, מריצים את הפקודה הבאה:

gcloud sql instances point-in-time-restore DATA_SOURCE \
--point-in-time='PITR_TIMESTAMP' \
--project='TARGET_PROJECT' \

מחליפים את מה שכתוב בשדות הבאים:

  • DATA_SOURCE: הנתיב של data-source לגיבוי שהכי קרוב לחותמת הזמן של ה-PITR שרוצים לשחזר.
  • PITR_TIMESTAMP: חותמת הזמן לפי שעון UTC של יומן ה-PITR של מופע המקור שרוצים לשחזר את המופע ממנו, בפורמט RFC 3339. לדוגמה: 2012-11-15T16:19:00.094Z.
  • TARGET_PROJECT: מזהה הפרויקט של מופע Cloud SQL.

REST v1

איך מוצאים את חלון הזמן של PITR

כדי לראות את חלון ה-PITR של המכונה שנמחקה, צריך לקבל את זמן השחזור המוקדם והמאוחר ביותר של המכונה. אתם יכולים לבחור חותמת זמן בכל שלב בחלון הזה כדי לבצע שחזור לנקודת זמן.

איך מוצאים את זמן המחיקה של מופע המקור ואת מספר הימים לשמירת היומן

הנתונים source-instance-deletion-time ו-log-retention-days של המופע שנמחק מאוחסנים עם הגיבויים שנשמרו של המופע אחרי המחיקה. כדי למצוא את הערכים האלה עבור המופע שנמחק, אפשר לעיין במאמר בנושא רשימת גיבויים שנשמרו.

שחזור באמצעות PITR

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • target-instance-id: מזהה מכונת היעד
  • source-instance-id: מזהה מכונת המקור
  • source-instance-deletion-time: שעת המחיקה של מופע המקור
  • restore-timestamp הנקודה בזמן שרוצים לשחזר את המכונה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

איך מוצאים את חלון הזמן של PITR

כדי לראות את חלון ה-PITR של המכונה שנמחקה, צריך לקבל את זמן השחזור המוקדם והמאוחר ביותר של המכונה. אתם יכולים לבחור חותמת זמן בכל שלב בחלון הזה כדי לבצע PITR.

איך מוצאים את זמן המחיקה של מופע המקור ואת מספר הימים לשמירת היומן

הנתונים source-instance-deletion-time ו-log-retention-days של המופע שנמחק מאוחסנים עם הגיבויים שנשמרו של המופע אחרי המחיקה. כדי למצוא את הערכים האלה עבור המופע שנמחק, אפשר לעיין במאמר בנושא רשימת גיבויים שנשמרו.

שחזור באמצעות PITR

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • target-instance-id: מזהה מכונת היעד
  • source-instance-id: מזהה מכונת המקור
  • source-instance-deletion-time: שעת המחיקה של מופע המקור
  • restore-timestamp הנקודה בזמן שרוצים לשחזר את המכונה

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "sourceInstanceDeletionTime: "source-instance-deletion-time",
    "pointInTime": "restore-timestamp"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

ביצוע PITR באמצעות מיקומי יומן בינארי

מומלץ לבצע PITR באמצעות חותמות זמן, כמו שמתואר במאמר ביצוע PITR באמצעות חותמת זמן. עם זאת, אפשר גם לבצע PITR באמצעות ציון מיקום ספציפי ביומן בינארי או מיקום אירוע בקובץ יומן בינארי.

למידע נוסף על PITR באמצעות מיקומי יומן בינארי, אפשר לעיין במאמר בנושא PITR באמצעות היומן הבינארי.

לפני שמתחילים

לפני שמבצעים את המשימה הזו, צריך:

זיהוי תנוחת ההתאוששות

  1. משתמשים בלקוח MySQL כדי להתחבר למופע שרוצים לשחזר.

    כדי לעשות זאת, משתמשים ב-Cloud Shell או במכונת הלקוח המקומית. מידע נוסף מופיע במאמר בנושא אפשרויות חיבור לאפליקציות חיצוניות.

  2. הצגת קובצי היומן הבינאריים של המופע:

    SHOW BINARY LOGS;
    
  3. הצגת 100 האירועים הראשונים בקובץ יומן בינארי העדכני ביותר:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' LIMIT 100;
    

    אפשר לשנות את מספר השורות שיוצגו, אבל לא כדאי להציג את כל האירועים בקובץ עד שתדעו מה הגודל שלו. הצגה של מספר גדול של אירועים עלולה להשפיע על ביצועי המערכת.

  4. אם האירוע שאתם מחפשים לא מוצג, השתמשו במיקום האחרון שמוצג כנקודת התחלה לחיפוש קבוצת האירועים הבאה:

    SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' FROM <POSITION> LIMIT 100;
    
  5. כשמוצאים את האירוע שמציין את הנקודה בזמן שרוצים לשחזר עד אליה, רושמים את המיקום (מוצג כ-Pos) ואת השם של קובץ יומן הבינארי.

    שם הקובץ של יומן הבינארי והמיקום הם הערכים שבהם משתמשים בשחזור לנקודת זמן.

הפלט הבא הוא דוגמה לפלט של הפקודה SHOW BINLOG EVENTS:

+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                                |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
| mysql-bin.000011 |   4 | Format_desc |  88955285 |         120 | Server ver: 5.6.30-log, Binlog ver: 4               |
| mysql-bin.000011 | 120 | Query       |  88955285 |         211 | create database db1                                 |
| mysql-bin.000011 | 211 | Query       |  88955285 |         310 | use `db1`; CREATE TABLE t (c CHAR(20))              |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |
| mysql-bin.000011 | 381 | Table_map   |  88955285 |         426 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 310 | Query       |  88955285 |         381 | BEGIN                                               |

| mysql-bin.000011 | 426 | Write_rows  |  88955285 |         464 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 464 | Xid         |  88955285 |         495 | COMMIT /* xid=56 */                                 |
| mysql-bin.000011 | 495 | Query       |  88955285 |         566 | BEGIN                                               |
| mysql-bin.000011 | 566 | Table_map   |  88955285 |         611 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 611 | Write_rows  |  88955285 |         649 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 649 | Xid         |  88955285 |         680 | COMMIT /* xid=57 */                                 |
| mysql-bin.000011 | 680 | Query       |  88955285 |         751 | BEGIN                                               |
| mysql-bin.000011 | 751 | Table_map   |  88955285 |         796 | table_id: 18 (db1.t)                                |
| mysql-bin.000011 | 796 | Write_rows  |  88955285 |         834 | table_id: 18 flags: STMT_END_F                      |
| mysql-bin.000011 | 834 | Xid         |  88955285 |         865 | COMMIT /* xid=58 */                                 |
| mysql-bin.000011 | 865 | Query       |  88955285 |         977 | use `db1`; DROP TABLE `t` /* generated by server */ |
+------------------+-----+-------------+-----------+-------------+-----------------------------------------------------+
16 rows in set (0.04 sec)

כדי לשחזר עד להצהרה DROP TABLE, שהודגשה בדוגמה הקודמת, צריך להשתמש ב-865 ב-mysql-bin.000011 כמיקום השחזור. ההצהרה DROP TABLE וכל הפעולות שאחריה לא משתקפות במופע החדש.

ביצוע PITR באמצעות מיקומי אירועים ביומן בינארי

gcloud

משתמשים בפקודה gcloud sql instances clone עם הדגלים --bin-log-file-name ו---bin-log-position:

  1. יוצרים את המופע החדש באמצעות שם הקובץ של יומן הבינארי ומיקום השחזור.

    מחליפים את מה שכתוב בשדות הבאים:

    • SOURCE_INSTANCE_NAME: השם של המכונה שממנה משחזרים.
    • NEW_INSTANCE_NAME: שם המשובט.
    • BINLOG_FILE_NAME: שם ליומן הבינארי, למשל mysql-bin.187288.
    • POSITION: המיקום ביומן הבינארי שאליו רוצים לשחזר, למשל 50001356.
    gcloud sql instances clone SOURCE_INSTANCE_NAME \
    NEW_INSTANCE_NAME \
    --bin-log-file-name="BINLOG_FILE_NAME" \
    --bin-log-position=POSITION

    לדוגמה, פקודה של gcloud sql instances clone עשויה להיראות כך:

    gcloud sql instances clone instance1 \
    instance1-clone \
    --bin-log-file-name=mysql-bin.0000031 \
    --bin-log-position=107 \
  2. משתמשים במזהה הפעולה שמוחזר מהפקודה clone כדי לבדוק את הסטטוס של פעולת השחזור.
    gcloud sql operations describe OPERATION_ID

    במהלך הפעולה, מוחזר סטטוס של RUNNING. כשהפעולה תושלם, יוחזר סטטוס של DONE.

REST v1

יוצרים את המופע החדש באמצעות שם הקובץ של יומן הבינארי והמיקום לשחזור שזיהיתם:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • target-instance-id: מזהה מכונת היעד
  • source-instance-id: מזהה מופע המקור
  • binary-log-file-name השם של קובץ היומן הבינארי
  • binary-log-position המיקום בקובץ היומן הבינארי

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

REST v1beta4

יוצרים את המופע החדש באמצעות שם הקובץ של יומן הבינארי ומיקום השחזור שזיהיתם:

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • target-instance-id: מזהה מכונת היעד
  • source-instance-id: מזהה מופע המקור
  • binary-log-file-name השם של קובץ היומן הבינארי
  • binary-log-position המיקום בקובץ היומן הבינארי

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone

תוכן בקשת JSON:

{
  "cloneContext":
  {
    "kind": "sql#cloneContext",
    "destinationInstanceName": "target-instance-id",
    "binLogCoordinates":
    {
      "kind": "sql#binLogCoordinates",
      "binLogFileName": "binary-log-file-name",
      "binLogPosition": "binary-log-position"
    }
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

הצגת הזמן המוקדם והמאוחר ביותר להתאוששות

אם יש לכם מופע זמין, אתם יכולים לבצע PITR לכל חותמת זמן בחלון ה-PITR של המופע. חלון הזמנים של PITR מתחיל בזמן השחזור המוקדם ביותר ומסתיים בזמן השחזור המאוחר ביותר. אם המופע לא זמין והיומנים של המופע מאוחסנים ב-Cloud Storage, או אם המופע נמחק והופעלה בו שמירה של PITR, אפשר לאחזר את זמן השחזור המוקדם והמאוחר ביותר ולבצע PITR לכל חותמת זמן בחלון הזה. בכל המקרים, אפשר לשחזר את המופע לאזור ראשי או משני אחר על ידי הזנת ערכים לאזורים המועדפים.

gcloud

Unavailable instance

כדי לקבל את השעה המוקדמת והשעה המאוחרת ביותר שאליהן אפשר לשחזר מופע של Cloud SQL שלא זמין, מריצים את הפקודה הבאה:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: השם של המכונה שרוצים למצוא את זמן השחזור האחרון שלה.

מכונה שנמחקה

כדי לקבל את השעה המוקדמת והשעה המאוחרת שבהן אפשר לשחזר מכונה שנמחקה ב-Cloud SQL, מריצים את הפקודה הבאה:

gcloud sql instances get-latest-recovery-time INSTANCE_NAME
--source-instance-deletion-time='SOURCE_INSTANCE_DELETION_TIMESTAMP'

מחליפים את מה שכתוב בשדות הבאים:

  • INSTANCE_NAME: השם של המכונה שרוצים למצוא את זמן השחזור האחרון שלה.
  • SOURCE_INSTANCE_DELETION_TIMESTAMP: חותמת הזמן לפי שעון UTC של הזמן שבו מופע המקור נמחק, בפורמט RFC 3339. לדוגמה: ‏2012-11-15T16:19:00.094Z.

REST v1

Unavailable instance

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • INSTANCE_NAME: השם של המכונה שעבורה מבצעים שאילתה לגבי זמן השחזור האחרון

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

מכונה שנמחקה

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • INSTANCE_NAME: השם של מכונת המקור שעבורה אתם שולחים שאילתה לגבי זמן השחזור האחרון
  • SOURCE_INSTANCE_DELETION_TIME: השעה שבה מופע המקור נמחק

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

REST v1beta4

Unavailable instance

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • INSTANCE_NAME: השם של המכונה שעבורה מבצעים שאילתה לגבי זמן השחזור האחרון

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

מכונה שנמחקה

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • INSTANCE_NAME: השם של מכונת המקור שעבורה אתם שולחים שאילתה לגבי זמן השחזור האחרון
  • SOURCE_INSTANCE_DELETION_TIME: השעה שבה מופע המקור נמחק

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#getLatestRecoveryTime",
  "earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
  "latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}

פתרון בעיות

שגיאה פתרון בעיות

argument --point-in-time: Failed to parse date/time:
Unknown string format: 2021-0928T30:54:03.094;
received: 2021-0928T30:54:03.094Z

או

Invalid value at 'body.clone_context.point_in_time'
(type.googleapis.com/google.protobuf.Timestamp), Field 'pointInTime',
Invalid time format: Failed to parse input,

חותמת הזמן שסיפקת לא תקינה.

HTTP Error 400: Successful backup required for carrying out the operation was not found.

או

Successful backup required for carrying out the operation was not found. or Time where no backups can be found.

חותמת הזמן שסיפקתם היא של שעה שבה לא ניתן היה למצוא גיבויים או קואורדינטות של binlog.

המאמרים הבאים