שחזור אשכול AlloyDB Omni באמצעות pgBackRest

בוחרים גרסת תיעוד:

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

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

מידע נוסף על הגדרת pgBackRest לעבודה עם AlloyDB Omni זמין במאמר הגדרת pgBackRest ל-AlloyDB Omni.

במאמר גיבוי ושחזור ב-Kubernetes מוסבר על מידע שמבוסס על Kubernetes.

לפני שמתחילים

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

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

  • מאגר גיבוי של pgBackRest שמכיל לפחות גיבוי אחד של מסד הנתונים של AlloyDB Omni.

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

סקירה כללית

כדי לבצע שחזור של AlloyDB Omni באמצעות pgBackRest, מריצים את הפקודה pgbackrest restore. הפרמטרים שאתם מספקים לפקודה משתנים בהתאם למצב.

באופן כללי, מריצים את הפקודה pgbackrest restore עם דגלים שמספקים את המידע הבא:

  • המיקום של קובץ ה-pgbackrest.conf.
  • השם של מאגר הגיבויים של pgBackRest שרוצים לשחזר אליו. המאגרים האלה מוגדרים ונקראים בקובץ pgbackrest.conf.
  • המיקום במערכת הקבצים המקומית שאליו ייכתבו הנתונים ששוחזרו.
  • מזהה של הגיבוי הספציפי או של נקודת הזמן שרוצים לשחזר ממנה.

כשמריצים את הפקודות של pgbackrest restore בקונטיינר, חשוב להשתמש בנתיבים של מערכת הקבצים מנקודת המבט של הקונטיינר. לדוגמה, הנתיב לספריית הנתונים של AlloyDB Omni הוא תמיד /var/lib/postgresql/data, לא משנה איפה היא נמצאת בשרת המארח. מידע נוסף זמין במאמר בנושא הערה לגבי נתיבים במערכת הקבצים.

ביצוע שחזור לנקודת זמן

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

בדוגמה הזו מניחים את הדברים הבאים:

  • יש לכם קובץ pgbackrest.conf ברמה העליונה של ספריית הנתונים של AlloyDB Omni. כך הקובץ יהיה זמין ל-pgbackrest שמופעל בתוך קונטיינר בתור /var/lib/postgresql/data.

  • הפעלתם גיבויים רציפים בהגדרות של pgBackRest.

  1. בסביבת היעד, מבצעים שחזור PITR ומציינים חותמת זמן לשחזור:

    Docker

    docker exec CONTAINER_NAME pgbackrest \
      --config-path=/var/lib/postgresql/data \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/var/lib/postgresql/data/data-RESTORED \
      --target="TIMESTAMP" \
      restore

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CONTAINER_NAME: השם שהקציתם לקונטיינר של AlloyDB Omni כשהתקנתם אותו, לדוגמה my-omni.

    • ‫STANZA: בית התצורה, שמוגדר על ידי הקובץ pgbackrest.conf, שצריך להחיל על השחזור הזה – לדוגמה, omni.

    • ‫TIMESTAMP: הזמן שאליו רוצים לשחזר, לדוגמה 2024-02-22 19:50:00.

    Podman

    podman exec CONTAINER_NAME pgbackrest \
      --config-path=/var/lib/postgresql/data \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/var/lib/postgresql/data/data-RESTORED \
      --target="TIMESTAMP" \
      restore

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫CONTAINER_NAME: השם שהקציתם לקונטיינר של AlloyDB Omni כשהתקנתם אותו, לדוגמה my-omni.

    • ‫STANZA: בית התצורה, שמוגדר על ידי הקובץ pgbackrest.conf, שצריך להחיל על השחזור הזה – לדוגמה, omni.

    • ‫TIMESTAMP: הזמן שאליו רוצים לשחזר, לדוגמה 2024-02-22 19:50:00.

  2. בסביבת היעד, עוצרים את הקונטיינר באמצעות הפקודה הבאה:

    Docker

    docker container stop CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
  3. משנים את השם של ספריית המשנה data של ספריית הנתונים, כאמצעי בטיחות:

    cd DATA_DIR
    sudo mv data data-OLD

    מחליפים את הערך DATA_DIR בנתיב של מערכת הקבצים לספריית הנתונים של AlloyDB Omni.

  4. מעבירים את הנתונים ששוחזרו למקום שלהם ומנקים את postgresql.auto.conf:

    sudo mv data-RESTORED data
    sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
  5. מפעילים את מאגר AlloyDB Omni עם שרת מסד הנתונים:

    Docker

    docker container start CONTAINER_NAME

    Podman

    podman container start CONTAINER_NAME

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

מידע נוסף על PITR ב-pgBackRest מופיע במאמר שחזור מערכת מנקודה מסוימת בזמן (PITR). מידע נוסף על הכנת קובץ pgbackrest.conf לשימוש ב-AlloyDB Omni מופיע במאמר הגדרת pgBackRest ל-AlloyDB Omni.

אפשרויות אחרות

הפקודה pgbackrest restore היא גמישה מאוד, עם מגוון אפשרויות ותכונות שאפשר לשלוט בהן על ידי העברת אפשרויות שונות בשורת הפקודה. למשל:

  • הגבלת השחזור רק לקבצים שהשתנו.
  • שחזור רק של מסדי נתונים נבחרים.

במדריך המלא לביצוע שחזורים ב-pgBackRest, אפשר לקרוא את המאמר שחזור.