אתם יכולים להשתמש בשחזור מערכת מנקודה מסוימת בזמן (PITR) כדי לשחזר את המכונות הראשיות של Cloud SQL, בין אם המכונה פעילה ובין אם היא נמחקה. בעזרת PITR אפשר לשחזר את המכונה לנקודת זמן ספציפית. שחזור מערכת מנקודה מסוימת בזמן תמיד יוצר מכונה חדשה. אי אפשר לבצע PITR למכונה קיימת.
ב-Cloud SQL יש את האפשרויות הבאות לשחזור המכונה באמצעות PITR:
כדי לבצע PITR במכונה לא זמינה או במכונה שנמחקה, צריך למצוא את זמן השחזור המוקדם ביותר והמאוחר ביותר.
ביצוע PITR באמצעות חותמת זמן
השיטה המומלצת לביצוע PITR היא שימוש בחותמת זמן.
ב-Cloud SQL משתמשים בכלי mysqlbinlog כדי לשחזר מכונות עד לזמן ספציפי. מידע נוסף על הכלי mysqlbinlog זמין במאמרי העזרה של MySQL.
כדי לבצע את המשימה הבאה, צריך:
- הפעלתם את הרישום ביומן הבינארי ואת הגיבויים במכונה, עם יומנים בינאריים רציפים מאז הגיבוי האחרון לפני האירוע שממנו אתם רוצים לשחזר. מידע נוסף זמין במאמר הפעלת רישום ביומן בינארי.
- חותמת זמן להגדרת נקודת השחזור. האירועים שמתרחשים בחותמת הזמן הזו ואחריה לא משתקפים במופע החדש.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את תפריט הפעולות הנוספות
של המכונה שרוצים לשחזר ולוחצים על Create clone. - אופציונלי: בדף Create a clone, מעדכנים את המזהה של השכפול החדש.
- בוחרים באפשרות שכפול מנקודת זמן מוקדמת יותר.
- מזינים את זמן ה-PITR.
- לוחצים על Create clone.
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 מופעלת האפשרות להשתמש בגיבויים משופרים, אתם יכולים לבצע שחזור מערכת מנקודה מסוימת בזמן (PITR) למכונה באמצעות כספת הגיבוי.
המסוף
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
פותחים את תפריט הפעולות הנוספות
של המכונה שרוצים לשחזר ולוחצים על Create clone.בוחרים באפשרות שכפול מנקודת זמן מוקדמת יותר.
מזינים את זמן ה-PITR.
לוחצים על Create clone.
gcloud
כדי לבצע PITR במכונה מכספת הגיבוי, צריך למצוא את ה-data-source של הגיבוי שהכי קרוב לזמן שבו רוצים לבצע את ה-PITR. כדי למצוא את הגיבוי, עיינו במאמר הצגת רשימה של כל הגיבויים בכספת הגיבוי של מכונה. אחרי שמזהים את הגיבוי, מריצים את הפקודה הבאה כדי לבצע את ה-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
כדי לבצע שחזור מערכת מנקודה מסוימת בזמן (PITR) באמצעות מקור נתונים מכספת הגיבוי, משתמשים ב-method 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
כדי לבצע שחזור מערכת מנקודה מסוימת בזמן (PITR) באמצעות מקור נתונים מכספת הגיבוי, משתמשים ב-method 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.
כדי לבצע PITR בין פרויקטים, צריך לבצע אחת מהפעולות הבאות:
אם אתם משתמשים ב-CLI של gcloud, הגדירו את הדגל
--projectלפרויקט שבו אתם רוצים ליצור את מכונת היעד.אם אתם משתמשים בממשקי API בארכיטקטורת REST, הגדירו בשדה
PROJECT_IDאת הפרויקט שבו אתם רוצים ליצור את מכונת היעד.
ביצוע PITR במכונה לא זמינה
המסוף
יכול להיות שתרצו לשחזר מכונה שלא זמינה לאזור אחר מהסיבות הבאות:
- אין גישה לאזור שבו המכונה מוגדרת. המכונה הזו נמצאת במצב
FAILED. - המכונה עוברת תחזוקה. המכונה הזו נמצאת במצב
MAINTENANCE.
כדי לשחזר מכונה לא זמינה:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מוצאים את השורה של המכונה שרוצים לשכפל.
- בעמודה Actions, לוחצים על התפריט More Actions.
- לוחצים על Create clone.
- בדף Create a clone, מבצעים את הפעולות הבאות:
- בשדה Instance ID, מעדכנים את מזהה המכונה, אם צריך.
- לוחצים על שכפול מנקודת זמן מוקדמת יותר.
- בשדה Point in time, בוחרים תאריך ושעה שמהם רוצים לשכפל נתונים. הפעולה הזו משחזרת את מצב המכונה מאותה נקודת זמן.
- לוחצים על Create clone.
בזמן שהעותק המשוכפל עובר אתחול, אתם מוחזרים לדף רשימת המכונות.
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 ו-cloudsql.instances.create. למידע נוסף על ההרשאות הנדרשות להרצת פקודות של ה-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 ו-cloudsql.instances.create. למידע נוסף על ההרשאות שנדרשות כדי להשתמש בשיטות 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 ו-cloudsql.instances.create. למידע נוסף על ההרשאות שנדרשות כדי להשתמש בשיטות 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 של המכונה שנמחקה, צריך לקבל את זמן השחזור המוקדם ביותר והמאוחר ביותר של המכונה. אתם יכולים לבחור כל חותמת זמן בחלון הזה כדי לבצע 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 \
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
איך מוצאים את חלון ה-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 נקודת הזמן שאליה רוצים לשחזר את המכונה
ה-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 באמצעות היומן הבינארי.
לפני שמתחילים
לפני שאתם מבצעים את המשימה הזו, אתם צריכים:
הפעלתם את הרישום ביומן הבינארי ואת הגיבויים במכונה, עם יומנים בינאריים רציפים מאז הגיבוי האחרון לפני האירוע שממנו אתם רוצים לשחזר. מידע נוסף זמין במאמר הפעלת רישום ביומן בינארי.
היומנים הבינאריים צריכים להיות זמינים בדיסק כדי שתוכלו לחפש בהם אירועים. כדי לבדוק את משך השמירה של היומנים הבינאריים בדיסק, קראו את המאמר הגדרת משך השמירה של יומן העסקאות. מידע נוסף זמין במאמר תקופת השמירה של יומנים. אי אפשר לעיין ביומנים בינאריים שמאוחסנים ב-Cloud Storage באמצעות הכלי
mysqlbinlog.שם קובץ של יומן בינארי והמיקום של האירוע שממנו רוצים לשחזר (האירוע הזה וכל האירועים שאחריו לא יופיעו במכונה החדשה). מידע נוסף זמין במאמר זיהוי המיקום של היומן הבינארי.
אחרי שמזהים את שם הקובץ והמיקום של היומן הבינארי, מבצעים את ה-PITR באמצעות מיקומי האירועים ביומן הבינארי.
זיהוי תנוחת ההתאוששות
משתמשים בלקוח MySQL כדי להתחבר למכונה שאליה רוצים לשחזר.
כדי לעשות את זה, משתמשים ב-Cloud Shell או במכונת הלקוח המקומית. למידע נוסף, ראו אפשרויות חיבור לאפליקציות חיצוניות.
מציגים את קובצי היומן הבינארי של המכונה:
SHOW BINARY LOGS;הצגת 100 האירועים הראשונים בקובץ היומן הבינארי האחרון:
SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' LIMIT 100;אתם יכולים לשנות את מספר השורות שיוצגו, אבל אל תציגו את כל האירועים בקובץ לפני שאתם יודעים מה גודל הקובץ. הצגת מספר גדול של אירועים יכולה להשפיע על ביצועי המערכת.
אם האירוע שאתם מחפשים לא מוצג, השתמשו במיקום האחרון שמוצג כנקודת ההתחלה לחיפוש בקבוצת האירועים הבאה:
SHOW BINLOG EVENTS IN '<BINARY_LOG_FILE>' FROM <POSITION> LIMIT 100;כשמוצאים את האירוע שמציין את נקודת הזמן שאליה רוצים לשחזר, מתעדים את המיקום (שמוצג בתור
Pos) ואת השם של קובץ היומן הבינארי.שם הקובץ והמיקום של היומן הבינארי הם הערכים שמשמשים ל-PITR.
הפלט הבא הוא דוגמה לפלט מהפקודה 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.
-
יוצרים את המכונה החדשה באמצעות שם הקובץ של היומן הבינארי ומיקום השחזור.
מחליפים את מה שכתוב בשדות הבאים:
- 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
- משתמשים במזהה הפעולה שהוחזר מהפקודה
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
מופע לא זמין
כדי לקבל את הזמן המוקדם ביותר והמאוחר ביותר שבו אפשר לשחזר מכונה של 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"
}
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
|
או
|
חותמת הזמן שציינת לא תקינה. |
|
או
|
חותמת הזמן שסיפקת היא לזמן שבו לא ניתן היה למצוא גיבויים או קואורדינטות של binlog. |
המאמרים הבאים
- מגדירים דגלים בעותק המשוכפל