בדף הזה מוסבר איך להשתמש בפתרון מתקדם להתאוששות מאסון (DR). התכונה 'שחזור מתקדם' מספקת שתי יכולות עיקריות:
- יתירות כשל (failover) של רפליקה מאפשרת לכם לעבור מהמכונה הראשית לרפליקת DR באופן מיידי במקרה של כשל באזור.
- Switchover מאפשר להפוך את התפקידים של המופע הראשי ושל רפליקת DR ללא אובדן נתונים. אפשר להשתמש במעבר לגיבוי כדי לשחזר פריסה למצב הפריסה המקורי שלה אחרי מעבר לגיבוי (failover) של העתק, או כדי לבדוק את התאוששות מאסון (DR).
התכונה 'DR מתקדם' נתמכת רק במכונות של מהדורת Cloud SQL Enterprise Plus.
לפני שמתחילים
אם אתם מתכננים להשתמש ב-Google Cloud SDK, אתם צריכים להשתמש בגרסה 502.0.0 ואילך. כדי לבדוק את הגרסה של ה-SDK של Google Cloud, מריצים את הפקודה gcloud --version. כדי לעדכן את Google Cloud SDK, מריצים את הפקודה gcloud components update.
כדי להתקין את Google Cloud SDK, ראו התקנת ה-CLI של gcloud.
הגדרת רפליקה של DR
כדי לבצע DR מתקדם, צריך קודם להגדיר רפליקה של DR חוצה אזורים.
הדרישות לגבי המכונה הראשית
המופע הראשי חייב להיות מופע במהדורת Cloud SQL Enterprise Plus, וצריכה להיות לו רפליקה ייעודית של DR.
צריך להפעיל שחזור מנקודה מסוימת בזמן (PITR) במופע הראשי. כדי להפעיל PITR, ראו שימוש בשחזור מנקודה מסוימת בזמן (PITR).אם אתם יוצרים את מופע Cloud SQL עם נקודת קצה לכתיבת DNS, המופע הראשי צריך להיות עם אותה הגדרת SSL כמו ה-DR רפליקה המיועדת, לפני שמפעילים את פעולת המעבר או את פעולת היתירות כשל. לדוגמה, אם מגדירים את ה<b>רפליקה</b> של DR ל<b>אכיפת הצפנת SSL</b>, אבל המכונה הראשית מאפשרת חיבורים לא מוצפנים, הלקוחות לא יוכלו להתחבר למכונה הראשית החדשה אחרי השלמת פעולת המעבר או ה<b>יתירות כשל</b>.
הדרישות לגבי העתק DR
העותק המשוכפל לקריאה שמוגדר להתאוששות מאסון צריך לעמוד בדרישות הבאות:
- חייב להיות מופע של מהדורת Cloud SQL Enterprise Plus
- צריכה להיות אותה גרסה של מסד הנתונים כמו במופע הראשי, עם PostgreSQL 12 ואילך
חייב להיות באזור נפרד מהמופע הראשי
חייבת להיות רפליקה לקריאה ישירה, ולא רפליקה מדורגת
אם מגדירים אותו עם דגל שדורש שהערך של הרפליקה יהיה גדול מהערך של המופע הראשי או שווה לו, צריך להגדיר את הדגל עם ערך ששווה לערך של המופע הראשי. שימו לב: בהתאם לסוג המכונה (רמת המחיר) ולגודל המופע של הרפליקה לצורך DR, ערכי ברירת המחדל יכולים להיות שונים גם אם לא הגדרתם אותם באופן מפורש. ההתראות האלה הן:
max_connectionsmax_worker_processesmax_wal_sendersmax_prepared_transactionsmax_parallel_workersmax_locks_per_transactionmax_parallel_maintenance_workersmax_parallel_workers_per_gather
אי אפשר להגדיר את הדגל
cloudsql.logical_decoding, ואי אפשר להגדיר משבצות לוגיות או שכפול לוגי
חובה לאחסן את יומני העסקאות שמשמשים ל-PITR ב-Cloud Storage
לא יכול להיות עותק משוכפל חיצוני
המלצות לגבי רפליקות של DR
בקטע הזה מפורטות המלצות לגבי הרפליקה של DR. ההמלצות הבאות יעזרו לכם להימנע מבעיות בביצועים במהלך הפריסה:
- צריך להשתמש באותו גודל דיסק כמו במכונה הראשית או להפעיל הגדלה אוטומטית.
- משתמשים בהגדרת זמינות גבוהה עקבית. אם מפעילים זמינות גבוהה במופע הראשי, צריך להפעיל זמינות גבוהה גם בעותק הגיבוי לשחזור מאסון.
- שימוש בהגדרת מטמון נתונים עקבית. אם מפעילים מטמון נתונים במופע הראשי, צריך להפעיל מטמון נתונים גם בעותק ה-DR.
- לפני ואחרי כל פעולת מעבר או פעולת יתירות כשל של רפליקה, צריך להגדיר את כל הדגלים המתאימים במסד הנתונים של רפליקת ה-DR.
- צריך להשתמש באותו סוג מכונה (רמה) ובאותו גודל גם עבור המופע הראשי וגם עבור רפליקת DR.
יצירת רפליקה כדי לעמוד בדרישות של רפליקה לצורך DR
אם למופע הראשי עדיין אין רפליקת קריאה בכמה אזורים שעומדת בדרישות של רפליקת DR, צריך ליצור אחת כזו.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מאתרים את המכונה הראשית.
- בעמודה פעולות, לוחצים על התפריט עוד פעולות.
- בוחרים באפשרות יצירת עותק לקריאה.
- בשדה Instance ID (מזהה המכונה), מזינים שם לשכפול ה-DR.
- בשדה Database version [גרסת מסד הנתונים], נבחרת בשבילכם אותה גרסה ראשית של המופע הראשי.
- בקטע Choose a region and zonal availability בדף, מבצעים את הפעולות הבאות:
- בוחרים אזור _שונה_ מהאזור של המופע הראשי.
- זה שינוי אופציונלי. בוחרים באפשרות אזורים מרובים עבור הרפליקה של DR.
- זה שינוי אופציונלי. בוחרים את האזורים הראשיים והמשניים בשביל רפליקת DR.
- בקטע Customize your instance (התאמה אישית של המופע) בדף, אפשר לעדכן את ההגדרות של רפליקת DR. מידע נוסף על כל הגדרה מופיע בדף מידע על הגדרות של מופע.
- בשדה Machine shapes, בוחרים את אותו סוג מכונה כמו המכונה הראשית.
- בקטע Flags (דגלים), מגדירים את הדגלים שנדרשים למסד הנתונים.
- לוחצים על יצירת העתק.
Cloud SQL יוצר גיבוי של המכונה הראשית ויוצר את הרפליקה. אתם חוזרים לדף המופע של השרת הראשי.
gcloud
כדי ליצור רפליקה שעומדת בדרישות של רפליקת DR, מריצים את הפקודה הבאה:
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --region=REPLICA_REGION_NAME \ --database-version=DATABASE_VERSION \ --tier=MACHINE_TYPE \ --availability-type=AVAILABILITY_TYPE --edition="ENTERPRISE_PLUS"
מחליפים את המשתנים הבאים:
- REPLICA_NAME: השם של רפליקת DR.
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- REPLICA_REGION_NAME: מציינים אזור ששונה מהאזור של המכונה הראשית.
- DATABASE_VERSION: מציינים את מחרוזת הגרסה שתואמת לגרסה הראשית ולגרסה המשנית של מסד הנתונים של המופע הראשי, לדוגמה
POSTGRES_16.גרסאות המאג'ור והמיינור של מסד הנתונים חייבות להיות זהות גם בעותק הראשי וגם בעותק לשחזור מאסון.
- MACHINE_TYPE: מציינים את אותו סוג מכונה כמו במכונה הראשית. מומלץ שסוג המכונה יהיה זהה לסוג המכונה של המופע הראשי.
- AVAILABILITY_TYPE: אם המופע הראשי מוגדר לזמינות גבוהה, מומלץ לציין
REGIONALכדי להפעיל זמינות גבוהה. - EDITION: מציינים
ENTERPRISE_PLUS.
Terraform
כדי ליצור רפליקה של DR, משתמשים במשאב של Terraform.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי וההעתק לשחזור מאסון.
- מחרוזת גרסה DATABASE_VERSION: שתואמת לגרסת מסד הנתונים של המופע הראשי, לדוגמה
POSTGRES_16. גרסת מסד הנתונים חייבת להיות זהה גם בשרת הראשי וגם בעותק המשוכפל של DR. - REPLICA_NAME: השם של מכונת הרפליקה של DR שאתם יוצרים.
- REPLICA_REGION: האזור של מכונת הרפליקה של DR. האזור של הרפליקה חייב להיות שונה מהאזור של המופע הראשי.
- MACHINE_TYPE: מציינים את אותו סוג מכונה כמו במכונה הראשית. מומלץ לבחור את אותו סוג מכונה כמו המופע הראשי.
- AVAILABILITY_TYPE: אם המופע הראשי מוגדר לזמינות גבוהה, מומלץ לציין AVAILABILITY_TYPE כדי להפעיל זמינות גבוהה.
REGIONAL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
תוכן בקשת JSON:
{
"masterInstanceName": "PRIMARY_INSTANCE_NAME",
"project": "PROJECT_ID",
"databaseVersion": "DATABASE_VERSION",
"name": "REPLICA_NAME",
"region": "REPLICA_REGION",
"settings":
{
"tier": "MACHINE_TYPE",
"availabilityType": "AVAILABILITY_TYPE",
"settingsVersion": 0,
"replicationType": "ASYNCHRONOUS",
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי וההעתק לשחזור מאסון.
- מחרוזת גרסה DATABASE_VERSION: שתואמת לגרסת מסד הנתונים של המופע הראשי, לדוגמה
POSTGRES_16. גרסת מסד הנתונים חייבת להיות זהה גם בשרת הראשי וגם בעותק המשוכפל של DR. - REPLICA_NAME: השם של מכונת הרפליקה של DR שאתם יוצרים.
- REPLICA_REGION: האזור של מכונת הרפליקה של DR. האזור של הרפליקה חייב להיות שונה מהאזור של המופע הראשי.
- MACHINE_TYPE: מציינים את אותו סוג מכונה כמו במכונה הראשית. מומלץ שנפח הדיסק יתאים לנפח הדיסק של המופע הראשי.
- AVAILABILITY_TYPE: אם המופע הראשי מוגדר לזמינות גבוהה, מומלץ לציין AVAILABILITY_TYPE כדי להפעיל זמינות גבוהה.
REGIONAL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
תוכן בקשת JSON:
{
"masterInstanceName": "PRIMARY_INSTANCE_NAME",
"project": "PROJECT_ID",
"databaseVersion": "DATABASE_VERSION",
"name": "REPLICA_NAME",
"region": "REPLICA_REGION",
"settings":
{
"tier": "MACHINE_TYPE",
"availabilityType": "AVAILABILITY_TYPE",
"settingsVersion": 0,
"replicationType": "ASYNCHRONOUS",
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
הגדרת העותק המשוכפל של DR למופע הראשי
בקטעים הבאים מוסבר איך להגדיר אחת מהרפליקות של מופע ראשי באזור אחר כרפליקה של DR למעבר או ליתירות כשל של רפליקה.
המסוף
כדי להגדיר רפליקה של DR למופע ראשי:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מוצאים את המופע הראשי ובוחרים אותו. יופיע הדף סקירה כללית של המופע הראשי.
- בתפריט הניווט, לוחצים על Replicas (עותקים).
- ברשימת העותקים לקריאה, מוצאים את העותק לקריאה בין אזורים שרוצים להגדיר כעותק לשחזור מאסון.
- עבור הרפליקה, לוחצים על הלחצן more_vert פעולות ובוחרים באפשרות הגדרת רפליקת DR.
- לוחצים על אישור.
gcloud
כדי להגדיר רפליקה של DR למופע ראשי, משתמשים בפקודה הבאה:
gcloud sql instances patch PRIMARY_INSTANCE_NAME \ --failover-dr-replica-name=REPLICA_NAME
מחליפים את המשתנים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- REPLICA_NAME: השם של רפליקת DR.
Terraform
כדי להגדיר רפליקה של DR למופע ראשי, משתמשים במשאב של Terraform.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- REPLICA_NAME: השם של רפליקת DR.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME
תוכן בקשת JSON:
{
"replicationCluster": {
"failoverDrReplicaName": "REPLICA_NAME"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- REPLICA_NAME: השם של רפליקת DR.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME
תוכן בקשת JSON:
{
"replicationCluster": {
"failoverDrReplicaName": "REPLICA_NAME"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
שינוי הסיווג של העותק המשוכפל לצורך התאוששות מאסון
אם הרפליקה עומדת בדרישות, אפשר להגדיר רפליקה אחרת כרפליקת DR. ההעתק הישן של DR מאבד את ייעודו כהעתק DR.
המסוף
כדי לשנות את רפליקת ה-DR עבור מופע ראשי:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מוצאים את המופע הראשי ובוחרים אותו. יופיע הדף סקירה כללית של המופע הראשי.
- בתפריט הניווט, לוחצים על Replicas (עותקים).
- ברשימת העותקים לקריאה, מוצאים את העותק לקריאה שחוצה אזורים שרוצים להגדיר כעותק החדש לשחזור מאסון.
- עבור הרפליקה, לוחצים על הלחצן more_vert פעולות ובוחרים באפשרות הגדרת רפליקת DR.
gcloud
כדי לשנות את העותק המשוכפל לצורך התאוששות מאסון, מריצים שוב את הפקודה designate ומציינים עותק משוכפל אחר לצורך התאוששות מאסון.
REST
כדי לשנות את העותק המשוכפל לצורך התאוששות מאסון, שולחים שוב את בקשת ה-API להקצאה ומציינים עותק משוכפל אחר לצורך התאוששות מאסון.
הצגת סיווג רפליקת DR
אפשר לבדוק איזו רפליקה של DR הוקצתה למופע הראשי באמצעות ה-CLI של gcloud או Cloud SQL Admin API. אפשר גם לבדוק אם הרפליקה היא רפליקה ייעודית ל-DR.
כדי לגלות איזו רפליקה של DR מיועדת למופע ראשי, פועלים לפי השלבים הבאים.
המסוף
כדי לגלות איזו רפליקה לקריאה היא רפליקת ה-DR המיועדת עבור מופע ראשי:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מוצאים את המופע הראשי ובוחרים אותו. יופיע הדף סקירה כללית של המופע הראשי.
- בתפריט הניווט, לוחצים על Replicas (עותקים).
- ברשימת העותקים לקריאה, מוודאים שהסמל
PostgreSQL disaster recovery replicaמופיע בעמודה Type של העותק הייעודי לשחזור מאסון.
gcloud
כדי לגלות איזו מופע הוא העתק ה-DR המיועד של מופע ראשי, משתמשים בפקודה הבאה:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
מחליפים את המשתנה הבא:
- PRIMARY_INSTANCE_NAME: השם של המופע הראשי
הפלט של הפקודה הזו מכיל את השדה failoverDrReplica שמזהה את העותק המשוכפל שמוגדר להתאוששות מאסון.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את המכונה.
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את המופע.
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
כדי לבדוק אם רפליקה היא רפליקת DR, משתמשים באחת מהשיטות הבאות.
המסוף
כדי לבדוק אם מופע משוכפל הוא רפליקת DR, מבצעים את הפעולות הבאות:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מאתרים את מופע הרפליקה.
- מוודאים שהסמל
PostgreSQL disaster recovery replicaמופיע בעמודה Type בשביל הרפליקה של DR שצוינה.
gcloud
כדי לבדוק אם מופע משוכפל הוא מופע משוכפל של DR, מריצים את הפקודה הבאה:
gcloud sql instances describe REPLICA_NAME
מחליפים את המשתנה הבא:
- REPLICA_NAME: השם של העותק לקריאה שרוצים לבדוק
אם העותק המשוכפל הוא עותק משוכפל של DR, הפלט של הפקודה יכיל את השדה drReplica=true.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את המופע.
- REPLICA_NAME: השם של הרפליקה.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את המופע.
- REPLICA_NAME: השם של הרפליקה.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
הסרת רפליקת DR
אפשר לבטל את ההגדרה של רפליקת DR במופע ראשי. עם זאת, אם לא מוקצה רפליקה של DR למופע ראשי, אי אפשר לבצע מעבר לגיבוי אוטומטי או יתירות כשל של רפליקה.
המסוף
כדי להסיר רפליקה ייעודית להתאוששות מאסון ממופע ראשי:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מוצאים את המופע הראשי ובוחרים אותו. יופיע הדף סקירה כללית של המופע הראשי.
- בתפריט הניווט, לוחצים על Replicas (עותקים).
- ברשימת העותקים לקריאה, מוצאים את העותק לקריאה בין אזורים שרוצים להסיר.
- במקרה של העותק, לוחצים על הלחצן more_vert Actions ובוחרים באפשרות Remove as DR replica.
- לוחצים על אישור.
gcloud
כדי להסיר את ייעוד העותק המשוכפל לצורך DR, מריצים את הפקודה הבאה במופע הראשי:
gcloud sql instances patch PRIMARY_INSTANCE_NAME \ --clear-failover-dr-replica-name
מחליפים את המשתנה הבא:
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית שממנה רוצים להסיר את רפליקת ה-DR המיועדת
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי וההעתק לשחזור מאסון.
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- מגדירים את השדה
failoverDrReplicaNameלמחרוזת ריקה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME
תוכן בקשת JSON:
{
"replicationCluster": {
"failoverDrReplicaName": ""
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי וההעתק לשחזור מאסון.
- PRIMARY_INSTANCE_NAME: השם של המכונה הראשית.
- מגדירים את השדה
failoverDrReplicaNameלמחרוזת ריקה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME
תוכן בקשת JSON:
{
"replicationCluster": {
"failoverDrReplicaName": ""
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
ביצוע מעבר לגיבוי
אחרי שמגדירים רפליקה של DR, אפשר לבצע את פעולת המעבר. עם זאת, מומלץ להימנע מביצוע פעולת המעבר בנסיבות הבאות:
- המופע הראשי נמצא בשימוש פעיל.
- מתבצעות פעולות של אדמין, כמו גיבוי אוטומטי או הפעלה או השבתה של זמינות גבוהה (HA).
כדי להימנע מזמן קצוב לתפוגה, מומלץ לבצע את המעבר כשנפח העסקאות נמוך.
כשהמעבר יסתיים, הפעולה תיצור גיבוי של המופע הראשי החדש (העותק הקודם של DR) ברגע שהמופע הראשי החדש יקודם. אחרי שהגיבוי הזה יסתיים, השחזור לנקודת זמן (PITR) יופעל באופן מלא במופע הראשי החדש. הגיבוי הזה יכול להימשך בין 5 ל-15 דקות, בהתאם לגודל הדיסק. הכיסוי של PITR מתחיל רק אחרי שהגיבוי הזה מסתיים. למידע נוסף על השיקולים לשימוש ב-PITR עם DR מתקדם, אפשר לעיין במאמר בנושא שימוש ב-PITR עם DR מתקדם.
אחרי שהפעולה של המעבר תסתיים, תשימו לב שכיוון השכפול התהפך.
אחרי שהמופע הראשי הישן מוגדר מחדש כרפליקה לקריאה, נקודת הקצה של ה-DNS לכתיבה, שבעבר הוגדרה למופע הראשי הישן, מוגדרת למופע הראשי החדש.
לפני שמתחילים
לפני שמבצעים את פעולת המעבר, צריך:
- הגדרת רפליקת DR אפשר לבצע מעבר בין המופע הראשי לבין רפליקת ה-DR שמוגדרת.
- מוודאים שהמופע הראשי והרפליקה של DR מחוברים לאינטרנט.
- מוודאים שעותק ה-DR פועל באותה גרסת מסד נתונים כמו המופע הראשי, PostgreSQL 12 ואילך.
- מוודאים שהאפשרות PITR מופעלת במופע הראשי. כדי להפעיל PITR, ראו שימוש בשחזור מנקודה מסוימת בזמן (PITR).
- חשוב לוודא שמופע ה-Primary והרפליקה של DR לא מוגדרים עם הדגל
cloudsql.logical_decoding. באף אחד מהמקרים לא יכולים להיות משבצות לוגיות או שכפול לוגי. - אם אתם משתמשים בנקודת קצה לכתיבת DNS, אז ודאו שהגדרת ה-SSL של המופע הראשי ושל רפליקת ה-DR זהה. לדוגמה, אם ה-DR רפליקה מוגדרת לאכיפת הצפנת SSL, אבל המכונה הראשית מאפשרת חיבורים לא מוצפנים, הלקוחות לא יוכלו להתחבר למכונה הראשית החדשה אחרי השלמת פעולת המעבר לגיבוי.
- מבצעים גיבוי על פי דרישה של המופע הראשי. הגיבוי הזה הוא אמצעי זהירות למקרה שתצטרכו לשחזר את הנתונים בעקבות כשלים בלתי צפויים.
ביצוע פעולת המעבר
המסוף
כדי לבצע את פעולת המעבר:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מאתרים את רפליקת ה-DR המוגדרת של המופע הראשי.
- לוחצים על המכונה המשוכפלת של DR. יופיע הדף Overview של רפליקת DR.
- לוחצים על הלחצן מעבר.
- בדף Perform switchover between the primary and DR replica (ביצוע מעבר בין העותק הראשי לבין העותק לשחזור מאסון), מזינים את השם של המכונה הראשית בשדה Instance ID (מזהה המכונה).
- לוחצים על מעבר.
gcloud
כדי לבצע את פעולת המעבר, מריצים את הפקודה הבאה:
gcloud sql instances switchover REPLICA_NAME [--db-timeout=TIMEOUT_DURATION ]
מחליפים את המשתנים הבאים:
- REPLICA_NAME: השם של רפליקת ה-DR המיועדת שרוצים שהמופע הראשי יחליף איתה תפקידים.
- TIMEOUT_DURATION: אופציונלי. משך הזמן הקצוב לתפוגה שמוקצב להשלמת פעולות במסד הנתונים במופע.
אם לא מציינים את הפרמטר הזה, פעולת המעבר כוללת זמן קצוב לתפוגה של 10 דקות.
אפשר להגדיל את ערך הזמן הקצוב לתפוגה הזה על ידי ציון הפרמטר --db-timeout. מחליפים את TIMEOUT_DURATION במשך הזמן של התקופה, עד 24 שעות, כולל סימון ראשוני של הפורמט. לדוגמה, אם רוצים להגדיר 30 שניות, מציינים 30s. אם העסק פתוח 24 שעות ביממה, מציינים
24h. אפשר גם לציין יחידות חלקיות של תקופת זמן באמצעות מספרים עשרוניים עם עד 9 ספרות אחרי הנקודה. לדוגמה, אם רוצים להגדיר 30.5 דקות, צריך לציין 30.5m.
אם אין פעולות בהמתנה, אפשר להקטין את ערך הזמן הקצוב לתפוגה.
Terraform
כדי להתחיל את פעולת המעבר, משתמשים במשאב של Terraform. כדי להפוך את רפליקת ה-DR למכונה הראשית החדשה, משתמשים בדוגמה הראשונה. הדוגמה מכילה הערות לגבי שינויי ההגדרות של Terraform שצריך לבצע כדי להחליף בין המופע הראשי לבין הרפליקה של DR.
אחרי שמבצעים את השינויים, מעדכנים את העותק הראשי ואת העותק לשחזור מאסון על ידי הפעלת הפקודה terraform plan. מוודאים שהפלט כולל את השורה
Plan: 0 to add, 1 to change, 0 to destroy. כדי לבצע את
המעבר, מריצים את terraform apply.
בשלב הזה, השרת הראשי המקורי הוא רפליקה של מופע השרת הראשי החדש. עם זאת, השינוי הזה לא משתקף במצב Terraform באופן אוטומטי. כדי להפוך את המופע הראשי המקורי לרפליקה של המופע הראשי החדש במצב Terraform, משתמשים בדוגמה השנייה. בדוגמה השנייה יש הערות שמתארות את השינויים שצריך לבצע אחרי שמריצים את הדוגמה הראשונה.
אם מצב Terraform שלכם מתעדכן בהצלחה,
כשמריצים את הפקודה terraform plan מול הדוגמה השנייה, מופיעה הודעה שדומה להודעה הבאה:
No changes. Your infrastructure matches the configuration.
אם מריצים את הפקודה terraform apply, מקבלים הודעה שדומה להודעה הבאה:
Resources: 0 added, 0 changed, 0 destroyed.
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי ושל העותק המשוכפל לצורך התאוששות מאסון.
- REPLICA_NAME: השם של רפליקת DR.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME/switchover
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי ושל העותק המשוכפל לצורך התאוששות מאסון.
- REPLICA_NAME: השם של רפליקת DR.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_NAME/switchover
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
ביצוע DR על ידי הפעלת מעבר לגיבוי (failover) של העותק המשוכפל
במקרה של כשל באזור או אסון, אפשר לבצע DR על ידי הפעלת פעולת יתירות כשל (failover) של הרפליקה לגיבוי ה-DR שייעדתם. כדי לבצע יתירות כשל של רפליקה, מעלים בדרגה את הרפליקה שמוגדרת ל-DR. בניגוד למעבר, הקידום של הרפליקה של DR הוא מיידי.
מאחר שהרפליקה של DR מקבלת את התפקיד של המופע הראשי באופן מיידי, יכול להיות שברפליקה לא יהיו כל הנתונים מהמופע הראשי הקודם בגלל השהיית הרפליקציה. לכן, מעבר לגיבוי בעקבות כשל בשכפול עלול לגרום לאובדן נתונים.
במסגרת תהליך הקידום, יתירות כשל של רפליקה מבצעת גיבוי של המופע הראשי החדש (ההעתק הקודם של DR) מיד אחרי שההעתק של DR הופך למופע הראשי החדש. אחרי שהגיבוי הזה יסתיים, האפשרות לשחזור לנקודת זמן (PITR) תופעל באופן מלא במופע הראשי החדש. הגיבוי הזה יכול להימשך בין 5 ל-15 דקות, בהתאם לגודל הדיסק של המופע הראשי החדש (והישן). במהלך תקופת הגיבוי הזו, אי אפשר להשתמש ב-PITR.
כשהמופע הראשי הישן חוזר למצב אונליין, תהליך יתירות הכשל של הרפליקה יוצר גיבוי. אחרי הגיבוי, המופע הראשי הישן נוצר מחדש כעותק לקריאה של המופע הראשי החדש.
למידע נוסף על השיקולים לשימוש ב-PITR עם DR מתקדם, אפשר לעיין במאמר בנושא שימוש ב-PITR עם DR מתקדם.
אחרי שמפעילים את פעולת המעבר לגיבוי של הרפליקה, נקודת הקצה של כתיבת ה-DNS, שבעבר הוגדרה למופע הראשי הישן, מוגדרת למופע הראשי החדש.
לפני שמתחילים
לפני שמבצעים יתירות כשל של רפליקה, צריך:
- אם עדיין לא עשיתם את זה, תצטרכו להגדיר רפליקה לשחזור מאסון. אפשר לבצע יתירות כשל של רפליקה רק בין המופע הראשי לבין רפליקת ה-DR שמוגדרת.
- מוודאים שהרפליקה של DR מחוברת לאינטרנט ופועלת בצורה תקינה.
- מוודאים שעותק ה-DR פועל באותה גרסת מסד נתונים כמו המופע הראשי, PostgreSQL 12 ואילך.
- מוודאים שהאפשרות PITR מופעלת במופע הראשי. כדי להפעיל PITR, ראו שימוש בשחזור מנקודה מסוימת בזמן (PITR).
- מוודאים שמופע ראשי ועותק DR לא מוגדרים עם הדגל
cloudsql.logical_decoding. באף אחד מהמקרים לא יכולים להיות משבצות לוגיות או שכפול לוגי. אם מפעילים מעבר לגיבוי בעותק ופענוח לוגי מופעל בשרת הראשי המקורי, אז כשהשרת הראשי המקורי הופך לעותק לקריאה, כל המשבצות הלוגיות שהוגדרו במופע השרת הראשי המקורי אובדות.
ביצוע פעולת יתירות כשל (failover) של הרפליקה
המסוף
כדי לבצע את פעולת יתירות הכשל של הרפליקה, בצע את הפעולות הבאות:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על המכונה המשוכפלת של DR. יופיע הדף Overview של רפליקת DR.
- לוחצים על הלחצן Replica Failover (מעבר לגיבוי במקרה של כשל).
- בדף Perform replica failover between the primary and DR replica (ביצוע מעבר לגיבוי בין העותק הראשי לעותק הגיבוי לשיפור הזמינות), מזינים את השם של המופע הראשי בשדה Instance ID (מזהה המופע) כדי לאשר שרוצים להמשיך בפעולה.
- כדי להתחיל את המעבר לגיבוי בעותק, לוחצים על Replica Failover (מעבר לגיבוי בעותק).
gcloud
כדי להפעיל יתירות כשל של רפליקה לרפליקת DR, השתמש בפקודה הבאה:
gcloud sql instances promote-replica \ REPLICA_NAME --failover
מחליפים את המשתנה הבא:
- REPLICA_NAME: השם של הרפליקה של DR
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי וההעתק לשחזור מאסון.
- REPLICA_NAME: השם של רפליקת DR.
- ENABLE_REPLICA_FAILOVER: צריך להגדיר את הערך
trueכדי להשתמש במעבר אוטומטי לגיבוי של רפליקה. אם מגדירים את הערךfalse, ה-API משתמש בשיטה הרגילהpromoteReplicaללא מעבר לגיבוי בעת כשל.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME/promoteReplica?failover=ENABLE_REPLICA_FAILOVER
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט של המופע הראשי וההעתק לשחזור מאסון.
- REPLICA_NAME: השם של רפליקת DR.
- ENABLE_REPLICA_FAILOVER: צריך להגדיר את הערך
trueכדי להשתמש במעבר אוטומטי לגיבוי של רפליקה. אם מגדירים את הערךfalse, ה-API משתמש בשיטה הרגילהpromoteReplicaללא מעבר לגיבוי בעת כשל.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_NAME/promoteReplica?failover=ENABLE_REPLICA_FAILOVER
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
בדיקת הסטטוס של מעבר לגיבוי (failover) של רפליקה
יתירות כשל של רפליקה מתבצעת בשני שלבים. השלב הראשון הוא העלאה בדרגה של רפליקת DR. בשלב השני, המערכת יוצרת מחדש את המופע הראשי הישן כעותק לקריאה בלבד.
כדי לבדוק את הסטטוס של יתירות כשל של רפליקה, בודקים את הסטטוס של כל שלב.
בודקים את הסטטוס של השלב הראשון.
המסוף
כדי לבדוק אם רפליקת ה-DR קודמה למופע עצמאי, מבצעים את הפעולות הבאות:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- מאתרים את השם של רפליקת DR שהועלתה בדרגה.
- מוודאים ש-PostgreSQL VERSION מופיע בעמודה Type של המופע הראשי החדש.
gcloud
כדי לבדוק את הסטטוס, מריצים את הפקודה הבאה:gcloud sql instances describe DR_REPLICA_NAME
מחליפים את המשתנה הבא:
- DR_REPLICA_NAME: השם של רפליקת ה-DR שקודמה
בפלט, בודקים שהשדה הבא מופיע ושהרפליקה הפכה למופע ראשי עצמאי של Cloud SQL:
instanceType: CLOUD_SQL_INSTANCE
-
כדי לוודא שהשלב השני הסתיים, בודקים את יומן הפעולות במופע ומחפשים את ההודעה
RECONFIGURE_OLD_PRIMARY.ההודעה הזו תופיע בהתאם לזמן שייקח למופע הראשי הישן לחזור למצב אונליין, שיכול להיות דקות או ימים במקרה של אסון.
למידע נוסף על בדיקת יומני הפעולות במכונה, אפשר לעיין במאמר בנושא הצגת יומני מכונות.
שימוש ב-PITR עם DR מתקדם
גם במעבר לגיבוי וגם ביתירות כשל של רפליקה, ברגע שהרפליקה של ה-DR מועלית בדרגה למופע ראשי, מתרחשים השינויים הבאים כדי לתמוך בגיבוי וב-PITR:
- הגדרות הגיבוי, כולל תזמון גיבוי אוטומטי, מועתקות מהמופע הראשי הישן למופע הראשי החדש.
מתבצע גיבוי חדש כדי לתמוך ב-PITR במופע הראשי החדש.
מדיניות שמירת נתונים של יומן העסקאות מועתקת מהמופע הראשי הישן למופע הראשי החדש.
גם לגבי הגיבוי וגם לגבי מדיניות השמירה של יומן העסקאות, מומלץ לוודא שההגדרות שמועברות מהמופע הראשי הישן מתאימות למופע הראשי החדש.
התחלה של כיסוי PITR
בסיום פעולת המעבר, Cloud SQL מתזמן גיבויים אוטומטיים ומבצע את הגיבוי הראשון של המכונה הראשית החדשה. אם רוצים שהכיסוי של PITR יתחיל מוקדם ככל האפשר, מומלץ לוודא שהגיבוי הראשון בוצע בהצלחה. לאחר השלמת הגיבוי האוטומטי הראשון בהצלחה, למופע הראשי החדש שקודם יש כיסוי PITR בלבד.
מידע נוסף על הצגת הגיבויים שזמינים למופע זמין במאמר הצגת רשימת גיבויים.
כיסוי PITR למקרים במהלך מעבר גיבוי לשחזור ומעבר לגיבוי רפליקה
כשמופע משתתף בפעולת מעבר אוטומטי או בפעולת יתירות כשל של רפליקה, המופע מבלה זמן כרפליקה לקריאה. אפשר לבצע PITR ולשחזר גיבויים במהלך התקופה שבה המכונה משמשת כרפליקה לקריאה וכמכונה ראשית.
אפשר לבצע PITR לנקודת זמן לפני המעבר, כשהמופע היה מופע ראשי. גם בפעולות של מעבר לגיבוי חם וגם בפעולות של יתירות כשל של רפליקה, Cloud SQL יוזם גיבוי של המופע הראשי החדש ברגע שהוא מקודם. ה-PITR מופעל במופע המקודם רק אחרי שהגיבוי הזה מסתיים. הגיבוי הזה יכול להימשך בין 5 ל-15 דקות, בהתאם לגודל הדיסק.
מצב של פיצול נתונים במהלך מעבר לגיבוי בעקבות כשל של רפליקה
יכול להיות שיתרחש פיצול מוח אם המופע הראשי ימשיך לקבל פעולות כתיבה בזמן שמשדרגים רפליקה באמצעות מעבר אוטומטי לרפליקה. אחרי שהרפליקה קודמה, כשהמופע הראשי הישן זמין שוב, הוא נבנה מחדש כרפליקה של המופע שקודם ומתבצע גיבוי סופי. אפשר להשתמש בגיבוי הזה כדי לשחזר נתונים של פיצול מוח שלא נכתבו ברפליקה שהועלתה.
מחיקה של גיבויים ויומני עסקאות בעותקים משוכפלים
אם מופעלת PITR במופע ראשי שנוצר ממנו גיבוי, והמופע הופך למופע משוכפל לקריאה, הגיבוי האחרון ומדיניות שמירת הנתונים של PITR מתקופת הזמן שבה הוא היה מופע ראשי נשמרים ומוחלים במהלך התקופה שבה הוא מופע משוכפל. גם אם הגיבויים לא מתבצעים במופע הראשי החדש, הגיבויים הישנים ויומני העסקאות שמשמשים ל-PITR נמחקים בעותק לקריאה בהתאם למדיניות האחרונה שהוגדרה.
לדוגמה, אם המופע מוגדר לגיבויים אוטומטיים יומיים ולשמירת 7 גיבויים עם יומני PITR של 7 ימים, אז כשהמופע הזה הופך לרפליקה לקריאה, כל מה שגילו יותר מ-7 ימים נמחק פעם ביום.
אם אתם רוצים למחוק גיבויים מוקדם יותר, אתם יכולים להסיר אותם באופן ידני. מידע נוסף מופיע במאמר בנושא מחיקת גיבוי.
המלצות ל-VPC Service Controls ול-DR מתקדם
אם אתם משתמשים ב-VPC Service Controls, אתם צריכים לוודא שגבולות הגזרה של השירות מאפשרים את התקשורת הנדרשת לכל פעולות השחזור, כמו פעולות שחזור לנקודת זמן (PITR), במיוחד כשאתם משתמשים ב-CMEK עם מפתחות בפרויקט אחר.
פעולות מתקדמות של DR, כמו מעבר גיבוי אוטומטי ומעבר לגיבוי רפליקה, יכולות להפעיל או להגדיר מחדש תכונות כמו PITR, שיכולות להיחסם על ידי VPC Service Controls אם גבולות השירות לא מוגדרים בצורה נכונה ל-CMEK ולגישה למפתחות בין פרויקטים.
- שמירת פרויקט מפתח KMS באותו גבול גזרה כמו המופע: מומלץ לכלול את הפרויקט שמכיל את מפתח ה-KMS באותו גבול גזרה של VPC Service Controls כמו מופעי Cloud SQL.
- שימוש בגבולות גזרה מגושרים: כאפשרות משנית (פחות מומלצת), אפשר להשתמש בגבולות גזרה מגושרים כדי לקשר בין פרויקטים בגבולות גזרה שונים.
- בדיקה: משתמשים במצב פרימטר לבדיקות של VPC Service Controls כדי לבדוק את הנהלים של DR (כמו מעבר לגיבוי) ולזהות הפרות פוטנציאליות של VPC Service Controls בלי לאכוף אותן.
מידע נוסף זמין במאמר הגדרת VPC Service Controls.
מגבלות
אי אפשר להגדיר מופע של רפליקת קריאה במהדורת Cloud SQL Enterprise Plus כרפליקת DR אם המופע הראשי מאחסן את יומני העסקאות שלו לשחזור מערכת מנקודה מסוימת בזמן (PITR) בדיסק. כדי לבדוק איפה מופעלת שמירת היומנים של מופע לצורך שחזור לנקודת זמן, אפשר לעיין במאמר בנושא בדיקת מיקום האחסון של יומני טרנזקציות שמשמשים לשחזור לנקודת זמן.
אי אפשר להגדיר רפליקה חיצונית כרפליקת DR.
אין תמיכה ב-Terraform לפעולות של מעבר לגיבוי בעת כשל של רפליקה.
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
| המעבר נכשל. |
|
| פעולת המעבר נכשלה והמופע הראשי תקוע במצב קריאה בלבד. | מבצעים הפעלה מחדש של מסד הנתונים כדי להחזיר את המופע הראשי למצב כתיבה. |
| פעולת המעבר הושלמה, אבל במסוף לא מוצגים התפקידים החדשים שהוקצו למופעים. Google Cloud | כדי לראות את הטופולוגיה המעודכנת, מרעננים את הדפדפן. |
| פעולת המעבר לגיבוי (failover) של העותק המשוכפל נכשלה. |
|
המאמרים הבאים
- כל שירותיGoogle Cloud שזמינים במיקומים שונים ברחבי העולם.
- מידע נוסף על יכולת צפייה במסד נתונים
- מעקב אחרי מכונות Cloud SQL