בדף הזה מוסבר איך להשתמש ברפליקות לקריאה חוצות אזורים (רפליקות שנוצרו באזור שונה מהאזור של השרת הראשי) ואיך להעלות אותן בדרגה לצורך העברה אזורית או תוכנית התאוששות מאסון (DR).
סקירה כללית
יש שני תרחישים נפוצים לקידום רפליקות חוצות אזורים:
- העברה אזורית: ביצוע העברה מתוכננת של מסד נתונים לאזור אחר.
- תוכנית התאוששות מאסון (DR): מעבר אוטומטי של מסד נתונים לאזור אחר במקרה שהאזור הראשי לא זמין.
בשני תרחישי השימוש האלה צריך להגדיר שכפול בין אזורים ואז לקדם את הרפליקה. ההבדל העיקרי ביניהם הוא אם העלאה בדרגה של הרפליקה מתוכננת (במקרה של העברה אזורית) או לא מתוכננת (נדרש יתירות כשל לאזור של הרפליקה כדי להמשיך את הפעולות כי הראשי הפך ללא זמין).
העברה אזורית
אתם יכולים להשתמש ברפליקה באזור אחר כדי להעביר את מסד הנתונים לאזור אחר עם זמן השבתה מינימלי. הרעיון הכללי הוא ליצור רפליקה באזור אחר, לחכות עד שהרפליקציה תתעדכן, להעלות אותה בדרגה ואז להפנות את הלקוחות למופע החדש שהועלה בדרגה.
השלבים לקידום הם אותם שלבים שנדרשים להעלאה בדרגה של רפליקה באזור מסוים. צריך לפעול לפי ההוראות האלה כדי לוודא שלמופע החדש שהועלה בדרגה יש את כל העסקאות שאושרו במופע הראשי המקורי. אחרי שמעלים את העותק המשוכפל לרמת הפקה ומוודאים שהמופע החדש שקודם פועל, צריך לעדכן את כל לקוחות מסד הנתונים כדי להתחבר למופע החדש.
תוכנית התאוששות מאסון (DR)
אפשר להשתמש בעותקים משוכפלים באזורים שונים כחלק מתוכנית התאוששות מאסון. אתם יכולים לקדם רפליקה בין-אזורית לגיבוי במקרה של כשל באזור של המופע הראשי, אם האזור הזה לא יהיה זמין למשך תקופה ממושכת.
מידע נוסף על תוכנית התאוששות מאסון (DR) זמין במאמר מידע על תוכנית התאוששות מאסון (DR) ב-Cloud SQL.
תוכנית התאוששות מאסון (DR) מתקדמת
אם אתם משתמשים במהדורת Cloud SQL Enterprise Plus, אתם יכולים להגדיר רפליקה לקריאה חוצה-אזורים כרפליקה להתאוששות מאסון (DR) לצורך התאוששות מתקדמת מאסון (DR). ב-DR מתקדם, מבצעים יתירות כשל של רפליקה כדי להחליף את המופע הראשי ברפליקת ה-DR המיועדת. המופע הראשי הישן הופך לרפליקה של הרפליקה של DR שקודמה. אפשר לבצע יתירות כשל של רפליקה רק לרפליקת ה-DR שמוגדרת. עדיין אפשר להעלות בדרגה רפליקות לקריאה אחרות בלי יתירות כשל.
כדי להחזיר את ה-Deployment למצב המקורי אחרי יתירות הכשל של הרפליקה ללא אובדן נתונים, אפשר לבצע מעבר גיבוי לשחזור. מכיוון שהמופע הראשי הישן הוא רפליקה של המופע הראשי החדש, אפשר להחליף שוב את התפקידים כדי לשחזר את המופע הראשי הישן.
מידע נוסף זמין במאמר בנושא התאוששות מתקדמת מאסון (DR).
אימות קריטריוני המעבר לגיבוי
מכיוון שהשכפול הוא אסינכרוני, כשמתרחש הפסקת שירות באזור ומנסים לבצע יתירות כשל, יכול להיות שחלק מהעסקאות האחרונות שאושרו בשרת הראשי יאבדו (לא ישוכפלו לרפליקה). בכל פעם שמופע ראשי הופך ללא זמין, השלבים הבאים מראים (1) איך לקבוע את כמות הנתונים, אם יש כאלה, שאולי אבדו במעבר ליתירות כשל בין אזורים, ו-(2) איך לוודא שהרפליקה שקודמה משקפת כמה שיותר פעולות כתיבה מהזמן האחרון.
קודם כול, בודקים את הערכים של Lag Bytes בלוח הבקרה של המעקב. כאשר יש הפסקת שירות אזורית באזור של המופע הראשי, Lag Bytes מדווח עבור המופע הראשי.
לאחר מכן, מתחברים למופע המשוכפל באמצעות לקוח PostgreSQL לפי ההוראות בדף סטטוס השכפול (ראו בכרטיסייה לקוח psql). הוראות בנושא המדדים pg_catalog.pg_last_wal_receive_lsn() ו-pg_catalog.pg_last_wal_replay_lsn() מוודאים שהרפליקה עיבדה את כל העסקאות שהיא קיבלה מהשרת הראשי.
כך תוכלו לוודא שכאשר העותק המשוכפל יקודם, הוא ישקף את כל העסקאות שהתקבלו לפני שהשרת הראשי הפסיק להיות זמין.
קידום של עותק לקריאה
אחרי שתקבעו שהקריטריונים למעבר לגיבוי (failover) מתקיימים, תוכלו להפוך אחת מהרפליקות למופע עצמאי שניתן לכתוב בו. לדוגמה, נבחן את התרחיש הבא:
- באזור א' (us-central1) יש מכונה ראשית (db-a-0) עם זמינות גבוהה
- באזור ב' (us-west1) יש רפליקה חוצת-אזורים בזמינות גבוהה (db-b-1) של db-a-0
- באזור C (us-east1) יש רפליקה חוצה-אזורים (db-c-1) של db-a-0
אפשר לקדם את db-b-1 באזור B כך שיהפוך למופע עצמאי עם הרשאות כתיבה.
הוראות מפורטות מופיעות במאמר בנושא קידום רפליקה.
מוודאים שסוג המכונה מתאים
כדי לוודא שסוג המכונה של המכונה החדשה שהועברה לרמת ייצור מתאים לעומס העבודה שלה, עוקבים אחרי מדדים במכונה, כמו שימוש במעבד (CPU) ושימוש בזיכרון. אם המופע החדש שודרג קטן יותר מהמופע הראשי הקודם, מומלץ לשנות את הגודל של המופע ששודרג כך שיתאים למופע הראשי הקודם, כדי שיוכל להתמודד עם אותה כמות של עומס.
הפעלת זמינות גבוהה למופע המקודם
להגדרת תוכנית התאוששות מאסון, מומלץ להגדיר את הרפליקה שרוצים להעלות בדרגה כרפליקה זמינה. לחלופין, אפשר להגדיר את המופע החדש שקודם לדרגה גבוהה כזמינות גבוהה. אם תבחרו שלא להגדיר את העותק לקריאה עם זמינות גבוהה, תוכלו גם להגדיר את המופע עם זמינות גבוהה אם וכאשר תקדמו אותו.
כשמשדרגים רפליקות לקריאה, הגיבויים מוגדרים אוטומטית. ההגדרה של רפליקה לקריאה לצורך זמינות גבוהה מתבצעת באותו אופן כמו בהגדרה של מופע ראשי. מידע נוסף מופיע במאמר בנושא הגדרת המופע לזמינות גבוהה.
יצירה מחדש של רפליקות נוספות
אם מקדמים רפליקה כדי שתהפוך למכונה ראשית, צריך ליצור מחדש את כל הרפליקות האחרות של המכונה הראשית הקודמת. לדוגמה, נניח את ההגדרה שמופיעה למעלה וחוזרת כאן:
- באזור א' (us-central1) יש מכונה ראשית (db-a-0) עם זמינות גבוהה
- באזור B (us-west1) יש רפליקה חוצת-אזורים (db-b-1) של db-a-0
- באזור C (us-east1) יש רפליקה חוצה-אזורים (db-c-1) של db-a-0
אם המופע הראשי (db-a-0) לא זמין, אפשר להעלות בדרגה את הרפליקה באזור ב' כמופע הראשי. כדי להוסיף שוב רפליקות באזורים א' ו-ג', צריך למחוק את המופעים הישנים (המופע הראשי הקודם באזור א' והרפליקה באזור ג') וליצור רפליקות חדשות לקריאה מהמופע הראשי החדש באזור ב'.
ההגדרה שתתקבל תהיה:
- באזור א' (us-central1) יש עכשיו רפליקה חוצת-אזורים (db-a-1)
- אזור ב' (us-west1) כולל עכשיו את המופע הראשי (db-b-1)
- באזור C (us-east1) יש עכשיו רפליקה חדשה חוצת-אזורים (db-c-2)