הגנה על הנתונים באמצעות גיבויים

בוחרים גרסה של מאמרי העזרה:

בדף הזה מתוארת ארכיטקטורת ההפניה של זמינות רגילה ב-AlloyDB Omni, שמאפשרת הגנה על נתונים באמצעות גיבויים.

תרחישים לדוגמה

ארכיטקטורת ההפניה הזו תומכת בתרחישים הבאים:

  • יש לכם מסדי נתונים שיכולים לעמוד בפני השבתה מסוימת ואובדן נתונים מאז הגיבוי האחרון.
  • אתם רוצים להגן על מסד הנתונים שלכם ב-AlloyDB Omni מפני שגיאות משתמש, נזק או כשלים פיזיים ברמת מסד הנתונים (בניגוד לצילום מצב של שרת או תמונת מכונה וירטואלית).
  • אתם רוצים לשחזר את מסד הנתונים במקום או מרחוק, ואולי עד לנקודת זמן ספציפית.

איך פועלת ארכיטקטורת ההפניה

ארכיטקטורת הייחוס של זמינות רגילה כוללת את הגיבוי והשחזור של מסדי הנתונים של AlloyDB Omni, בין שהם פועלים כמכונה עצמאית בשרת מארח, כמכונה וירטואלית (התקנת AlloyDB Omni) או באשכול Kubernetes (התקנת AlloyDB Omni ב-Kubernetes).

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

הפחתת RPO

התכונה continuous archiving של PostgreSQL מאפשרת להשיג יעד נמוך להתאוששות מאסון (RPO) ולבצע שחזור מערכת מנקודה מסוימת בזמן (PITR) באמצעות גיבויים. התהליך הזה כולל העברה לארכיון של קובצי כתיבה מראש ביומן (WAL) וסטרימינג של נתוני WAL, אולי למיקום אחסון מרוחק.

אם קובצי WAL מועברים לארכיון רק כשהם מלאים או במרווחי זמן ספציפיים, אובדן מלא של מסד הנתונים (כולל קובצי WAL הנוכחיים) מגביל את השחזור לקובץ ה-WAL האחרון שהועבר לארכיון. המשמעות היא שצריך להביא בחשבון אובדן נתונים פוטנציאלי ביעד להתאוששות מאסון (RPO). לעומת זאת, העברת נתונים רציפה של WAL ממזערת את אובדן הנתונים.

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

שיטות לגיבוי

אתם יכולים להגדיר גיבויים ברמת Postgres של AlloyDB Omni שיישמרו באחסון מקומי או מרוחק. אחסון מקומי אמנם מאפשר גיבוי ושחזור מהירים יותר, אבל אחסון מרחוק בדרך כלל עמיד יותר לטיפול בכשלים כשמארח שלם או מכונה וירטואלית נכשלים.

גיבויים בסביבות שהן לא Kubernetes

בפריסות שהן לא של Kubernetes, אפשר לתזמן גיבויים באמצעות הכלים הבאים של PostgreSQL:

לחלופין, במסדי נתונים קטנים, אפשר לבצע גיבוי לוגי של מסד הנתונים (באמצעות pg_dump למסד נתונים יחיד או pg_dumpall לאשכול כולו). אפשר לשחזר באמצעות pg_restore.

גיבויים ב-Kubernetes באמצעות אופרטור AlloyDB Omni

ב-AlloyDB Omni שנפרס באשכול Kubernetes, אפשר להגדיר גיבויים רציפים באמצעות תוכנית גיבוי לכל אשכול מסד נתונים. מידע נוסף זמין במאמר בנושא גיבוי ושחזור ב-Kubernetes.

אתם יכולים לאחסן את הגיבויים של AlloyDB Omni באופן מקומי או מרחוק ב-Cloud Storage, כולל אפשרויות שכל ספק ענן מציע. מידע נוסף מופיע באיור 1, שמציג יעדי גיבוי פוטנציאליים.

‫AlloyDB Omni עם אפשרויות גיבוי

איור 1. ‫AlloyDB Omni עם אפשרויות גיבוי.

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

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

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

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

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

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

כדי לשלוט בכתיבה של קובצי ה-WAL, אפשר להגדיר את הפרמטרים הבאים:

פרמטר תיאור

wal_writer_delay

ההגדרה קובעת באיזו תדירות כותב ה-WAL מרוקן את ה-WAL לדיסק, אלא אם הכתיבה מתבצעת מוקדם יותר על ידי טרנזקציה שמתבצעת באופן אסינכרוני. ערך ברירת המחדל הוא 200ms. הגדלת הערך הזה מפחיתה את תדירות הכתיבה, אבל עלולה להגדיל את כמות הנתונים שאובדים אם השרת קורס.

wal_writer_flush_after

מציינת כמה נתוני WAL יכולים להצטבר לפני שכותב ה-WAL מאלץ את המערכת לרוקן את הנתונים לדיסק. ערך ברירת המחדל הוא 1MB. אם הערך הוא אפס, נתוני WAL תמיד נמחקים מהדיסק באופן מיידי.

synchronous_commit

מציין אם ה-commit מחזיר תשובה למשתמש לפני שנתוני ה-WAL נמחקים מהדיסק. הגדרת ברירת המחדל היא on, כדי לוודא שהטרנזקציה תהיה עמידה. במילים אחרות, הפעולה commit נכתבה בדיסק לפני שהוחזר קוד הצלחה למשתמש. אם הערך הוא off, יכול להיות שיעברו עד פי שלושה wal_writer_delay לפני שהטרנזקציה תיכתב בדיסק.

מעקב אחר השימוש ב-WAL

אפשר להשתמש בשיטות הבאות כדי לבדוק את השימוש ב-WAL:

שיטת התצפית תיאור

pg_stat_wal

בתצוגה הרגילה הזו יש את העמודות wal_write ו-wal_sync, שבהן מאוחסנים הנתונים של מספר הכתיבות ב-WAL ומספר הסנכרונים ב-WAL. כשהפרמטר להגדרה track_wal_io_timing מופעל, גם הפרמטרים wal_write_time ו-wal_sync_time נשמרים. תמונות מצב רגילות של התצוגה הזו יכולות לעזור להציג את פעילות הכתיבה והסנכרון של WAL לאורך זמן.
pg_current_wal_lsn() הפונקציה הזו מחזירה את המיקום הנוכחי של מספר הרצף של היומן (lsn). כשמשייכים אותו לחותמת זמן ואוספים אותו כצילומי מצב לאורך זמן, אפשר לקבל את הערך של בייטים/שנייה של WAL שנוצר באמצעות הפונקציה pg_wal_lsn_diff(lsn1, lsn2). הפונקציה הזו היא מדד שימושי להבנת קצב העסקאות ולביצועים של קובצי ה-WAL.

העברת נתוני WAL בסטרימינג למיקום מרוחק

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

לוחות זמנים לגיבויים

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

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

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

כדי לצמצם את ה-RTO עם פוטנציאל ל-RPO גבוה יותר, מסדי נתונים נוספים יכולים לפעול במצב שחזור רציף. התהליך הזה כולל הפעלה מחדש של גיבויים ועדכון רציף של הסביבה המשנית על ידי העברה לארכיון והפעלה מחדש של קובצי WAL חדשים. ה-RPO בפועל, שמשקף אובדן נתונים פוטנציאלי, תלוי בתדירות העסקאות, בגודל קובץ ה-WAL ובשימוש בסטרימינג של WAL.

שחזור בסביבה שהיא לא Kubernetes

בפריסות שאינן Kubernetes, כדי לשחזר מסד נתונים של AlloyDB Omni, צריך לעצור את קובץ ה-Docker ואז לשחזר את הנתונים, או לשחזר את הנתונים למיקום אחר ולהפעיל מופע חדש של Docker באמצעות הנתונים המשוחזרים. אחרי שהקונטיינר מופעל מחדש, אפשר לגשת למסד הנתונים עם הנתונים ששוחזרו.

מידע נוסף על אפשרויות השחזור זמין במאמרים שחזור אשכול AlloyDB Omni באמצעות pgBackRest ושחזור אשכול AlloyDB Omni באמצעות Barman.

שחזור ב-Kubernetes באמצעות Operator

כדי לשחזר מסד נתונים ב-Kubernetes, האופרטור מציע שחזור לאותו אשכול Kubernetes ולמרחב השמות, מגיבוי עם שם או משיבוט מנקודת זמן מסוימת (PIT). כדי לשכפל מסד נתונים לאשכול Kubernetes אחר, משתמשים ב-pgBackRest. למידע נוסף, קראו את המאמרים גיבוי ושחזור ב-Kubernetes וסקירה כללית על שכפול אשכול של מסד נתונים מגיבוי של Kubernetes.

הטמעה

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

יתרונות

  • קל להשתמש בהם ולנהל אותם, והם מתאימים למסדי נתונים לא קריטיים עם RTO/RPO גמישים.
  • נדרשת חומרה נוספת מינימלית
  • תמיד צריך גיבויים כדי להכין תוכנית התאוששות מאסון (DR) מלאה
  • אפשר לבצע שחזור לכל נקודת זמן בחלון השחזור

מגבלות

  • דרישות האחסון עשויות להיות גדולות יותר ממסד הנתונים עצמו, בהתאם לדרישות השמירה.
  • השחזור יכול להיות איטי, וזמן ההשבתה המקסימלי (RTO) עלול להיות ארוך יותר.
  • עלול לגרום לאובדן נתונים מסוים, בהתאם לזמינות של נתוני ה-WAL הנוכחיים אחרי כשל במסד הנתונים, מה שעלול להשפיע לרעה על RPO.

חלופות

  • כדאי לשקול את ארכיטקטורת הזמינות המשופרת או פרימיום כדי לשפר את הזמינות ואת אפשרויות ההתאוששות מאסון.

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