הגדרת pgBackRest ל-AlloyDB Omni ב-Linux

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

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

מידע נוסף על pgBackRest זמין במדריך למשתמש.

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

לפני שמגדירים את AlloyDB Omni לעבודה עם pgBackRest, צריך לוודא שמתקיימים התנאים המוקדמים הבאים:

הגדרה בסיסית עם גיבויים מקומיים

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

‫pgBackRest הוא מוצר גמיש של צד שלישי שתואם ל-AlloyDB Omni, ולכן אתם יכולים לשנות את השלבים האלה בהתאם לצרכים ולהעדפות שלכם.

יצירת ספריית גיבוי

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

  1. אם AlloyDB Omni פועל, צריך להפסיק אותו.

    sudo systemctl stop alloydbomni18
    
  2. יוצרים ספריית גיבוי.

    sudo mkdir -p BACKUP_DIR
    

    מחליפים את BACKUP_DIR בספריית המארח שבה הגיבויים יאוחסנו.

  3. נותנים הרשאת קריאה לספריית הגיבוי ל-postgres.

    sudo chown -R postgres:postgres BACKUP_DIR
    

הגדרת גיבויים מקומיים

‫pgBackRest יוצר ספריות משנה לכל גיבוי שמתבצע, וכולל קובץ מניפסט בטקסט פשוט.

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

המאגר הוא המקום שבו הגיבויים נכתבים. pgBackRest תומך בכתיבה ליותר ממאגר אחד בבית מסוים. רוב פרמטרי ההגדרה שקשורים למאגרי מידע עוברים אינדוקס עם ערך מספרי. לדוגמה, repo1-. גם פרמטרים שקשורים לאשכולות PostgreSQL עוברים אינדוקס, באופן נפרד. לדוגמה, pg1-.

‫pgBackRest משתמש בקובץ תצורה בשם pgbackrest.conf כדי לשמור פרמטרים גלובליים ופרמטרים ספציפיים ל-stanza.

כדי ליצור ולאתחל קובץ תצורה לגיבוי של אשכול AlloyDB Omni, יוצרים את הקובץ pgbackrest.conf בספריית הגיבויים בצד המארח שיצרתם במאמר יצירת ספריית גיבוי.

[global]
# Paths (all mandatory):

repo1-path=BACKUP_DIR
spool-path=BACKUP_DIR/spool
lock-path=BACKUP_DIR


# Retention details:
repo1-retention-full=3
repo1-retention-full-type=count
repo1-retention-diff=16

# Force a checkpoint to start backup immediately:
start-fast=y

# Logging parameters:

log-path=BACKUP_DIR

log-level-console=info
log-level-file=info

# Recommended ZSTD compression:
compress-type=zst

# Other performance parameters:
archive-async=y
archive-push-queue-max=1024MB
archive-get-queue-max=256MB
archive-missing-retry=y

[global:archive-push]
process-max=2

[global:archive-get]
process-max=2

[omni]
pg1-user=postgres
pg1-socket-path=/tmp

pg1-path=DATA_DIR

חלק מהפרמטרים הם חובה, אבל אפשר לשנות אחרים כדי להתאים אותם לדרישות הספציפיות שלכם, למשל:

  • repo1-path: מיקום הספרייה שאליה נכתבות הגיבויים. מומלץ לבחור מיקום שגלוי גם לשרת המארח וגם למאגר התגים.

  • log-path: מיקום הספרייה שאליה נכתבים קובצי היומן. אם רוצים לכתוב את קובצי היומן למיקום נפרד, ולא לערבב אותם עם הגיבויים עצמם, צריך לשנות את הפרמטר הזה.

  • repo1-retention-full: מספר הגיבויים המלאים שיישארו.

  • repo1-retention-full-type: האם השמירה נמדדת לפי מספר או לפי תקופת זמן (ימים).

  • repo1-retention-diff: מספר הגיבויים הדיפרנציאליים שיישארו.

הגדרות פרמטרים אחרות שאינן קריטיות, אך מומלצות, שתואמות ל-AlloyDB Omni בקובץ ההגדרות כוללות את ההגדרות הבאות:

  • log-level-console: רמת הרישום ביומן שנכתבת למסך (STDOUT) כשמריצים פקודות של pgBackup. אפשר לשנות את הערך הזה בקובץ ההגדרות, או להחליף אותו באמצעות ארגומנט שורת הפקודה --log-level-console. ערך ברירת המחדל הוא warn.

  • start-fast: מפעיל נקודת ביקורת כדי להתחיל את הגיבויים במהירות. ערך ברירת המחדל הוא n.

  • archive-async: דחיפה אסינכרונית של קובצי פלח WAL לשיפור הביצועים. ערך ברירת המחדל הוא n.

  • process-max: מספר התהליכים המקסימלי לשימוש בדחיסה ובהעברה. בדרך כלל הערך שמוגדר הוא max_cpu/4 באשכול ראשי או max_cpu/2 באשכול במצב המתנה. ערך ברירת המחדל הוא 1.

  • compress-type: אלגוריתם הדחיסה שבו יש להשתמש. ערך ברירת המחדל הוא gz.

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

אחרי שמגדירים את pgBackRest, צריך לאתחל את מאגרי היעד שבהם נכתבות הגיבויים על ידי יצירת ה-stanza, שמשתמשת בפרמטרים שהוגדרו בקובץ ההגדרות.

כדי להגדיר את מסד הנתונים לגיבויים, פועלים לפי השלבים הבאים:

  1. יוצרים את הפיסקה באמצעות הפקודה stanza-create.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni stanza-create
    

    מחליפים את BACKUP_DIR בספריית הגיבוי שיצרתם במאמר יצירת ספריית גיבוי.

  2. מגדירים את מסד הנתונים לגיבויים.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/BACKUP_DIR --stanza=omni archive-push %p';" \
    -c "ALTER SYSTEM SET archive_mode=on;" \
    -c "ALTER SYSTEM SET max_wal_senders=10;" \
    -c "ALTER SYSTEM SET wal_level=replica;"
    
  3. מפעילים מחדש את AlloyDB Omni.

    sudo systemctl restart alloydbomni18
    
  4. מאמתים את הגדרות הגיבוי.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres \
    -c "SELECT name, setting
        FROM pg_catalog.pg_settings
        WHERE name IN ('archive_command',
                       'archive_mode',
                       'max_wal_senders',
                       'wal_level')
        ORDER BY name"
    
  5. ביצוע בדיקה של pgBackRest.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    check
    

ביצוע גיבוי

  1. מבצעים גיבוי מלא.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    --type=full backup
    

    מחליפים את BACKUP_DIR בספריית הגיבוי שיצרתם במאמר יצירת ספריית גיבוי.

  2. מבצעים גיבוי דיפרנציאלי.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    --type=diff backup
    
  3. דיווח על גיבויים.

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni \
    info
    

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

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

הגדרות בהתאמה אישית וגיבויים מרחוק

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

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

לדוגמה, pgBackRest תומך בשימוש בקטגוריית Cloud Storage כמאגר גיבוי, עם מספר אפשרויות הגדרה קשורות. בחלק הבא מוצגת דרך אחת להשתמש באפשרויות האלה.

דוגמה להגדרה באמצעות Cloud Storage

השלבים בקטע הזה מבוססים על קובץ ההגדרות שהוצג בקטע הגדרה בסיסית עם גיבויים מקומיים. השינויים האלה בקובץ מגדירים מאגר גיבויים שני בקטגוריה של Cloud Storage, שאפשר לגשת אליו דרך ניהול זהויות והרשאות גישה (IAM).

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

כדי להרחיב את קובץ התצורה הקודם ולהגדיר מאגר pgBackRest שמבוסס על Cloud Storage, מבצעים את השלבים הבאים:

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

  2. מוסיפים את השורות האלה לקטע [global] בקובץ pgbackrest.conf:

    # Cloud Storage access details:
    repo2-type=gcs
    repo2-gcs-key-type=auto
    repo2-storage-verify-tls=n
    
    # Cloud Storage bucket and path details:
    repo2-gcs-bucket=BUCKET_NAME
    repo2-path=PATH_IN_BUCKET
    
    # Cloud Storage backup retention parameters:
    repo2-retention-full=8
    repo2-retention-full-type=count
    

    מחליפים את המשתנה הבא:

    • BUCKET_NAME: שם הקטגוריה ב-Cloud Storage שבה רוצים ש-pgBackRest ישמור את הגיבויים.
    • PATH_IN_BUCKET: נתיב הספרייה בקטגוריית Cloud Storage שבה רוצים ש-pgBackRest ישמור את הגיבויים.
  3. מאתחלים את מיקום הגיבוי בענן באמצעות הפקודה pgbackrest stanza-create:

    sudo -u postgres pgbackrest \
    --config-path=/var/lib/BACKUP_DIR \
    --stanza=omni stanza-create
    

    מחליפים את BACKUP_DIR בספריית הגיבוי שיצרתם במאמר יצירת ספריית גיבוי.

אחרי שמאחלים את מאגר הגיבוי בקטגוריה של Cloud Storage באמצעות הפקודה pgbackrest stanza-create, יכול להיות ש-pgBackRest יגבה את הנתונים לשני מיקומים:

  • המיקום במערכת הקבצים המקומית, שמוגדר במקום אחר בקובץ התצורה כ-repo1-path. זהו מיקום ברירת המחדל אם לא מציינים את --repo בפקודה pgbackrest.

  • קטגוריה של Cloud Storage, שמוגדרת באמצעות הנחיות ההגדרה repo2-gcs-bucket שמוגדרות בדוגמה הזו. כדי להשתמש בקטגוריה של Cloud Storage, מציינים את --repo=2 בפקודה pgbackrest.

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