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

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

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

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

ביצוע PITR

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. פותחים את תפריט הפעולות הנוספות סמל האפשרויות הנוספות. של המכונה שרוצים לשחזר ולוחצים על Create clone.
  3. אופציונלי: בדף יצירת שיבוט, מעדכנים את המזהה של השיבוט החדש.
  4. בוחרים באפשרות שיבוט מנקודה מוקדמת יותר בזמן.
  5. מזינים את השעה של ה-PITR.
  6. בוחרים באפשרות כל מסדי הנתונים או מציינים שם של מסד נתונים.
    אם מציינים שם של מסד נתונים, אפשר לבחור רק אחד. כברירת מחדל, PITR מופעל לכל מסדי הנתונים.
  7. לוחצים על יצירת שיבוט.

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 הנקודה בזמן לשחזור עד אליה

בבקשת ה-JSON, אפשר לציין עד שם מסד נתונים ספציפי אחד באופן הבא: "databaseNames": "my-database"

ה-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 הנקודה בזמן לשחזור עד אליה

בבקשת ה-JSON, אפשר לציין עד שם מסד נתונים ספציפי אחד באופן הבא: "databaseNames": "my-database"

ה-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 במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

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

  3. בוחרים באפשרות שיבוט מנקודה מוקדמת יותר בזמן.

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

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

gcloud

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

gcloud sql instances point-in-time-restore DATA_SOURCE
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

REST v1beta4

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

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

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

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

gcloud

גיבוי רגיל

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

כדי למצוא את חלון ה-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

כדי לשחזר את המכונה שנמחקה באמצעות 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 של המכונה שנמחקה, צריך לקבל את זמן השחזור המוקדם והמאוחר ביותר של המכונה. אתם יכולים לבחור חותמת זמן בכל שלב בחלון הזה כדי לבצע 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 הנקודה בזמן שרוצים לשחזר את המכונה

בבקשת ה-JSON, אפשר לציין עד שם מסד נתונים ספציפי אחד באופן הבא: "databaseNames": "my-database"

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

gcloud

מופע לא זמין

כדי לקבל את השעה המוקדמת ביותר והשעה המאוחרת ביותר שבהן אפשר לשחזר מופע של 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

מופע לא זמין

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

  • 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

מופע לא זמין

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

  • 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.

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