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

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

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

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

מידע נוסף על 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
    

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

    • ‫BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים.

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

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

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

המאגר הוא המקום שבו נכתבים הגיבויים. pgBackRest תומך בכתיבה ליותר ממאגר אחד בבית נתון. רוב הפרמטרים של ההגדרות שקשורים למאגרים מסומנים באינדקס עם ערך מספרי. לדוגמה, repo1-. גם פרמטרים שקשורים לאשכולות PostgreSQL נוספים לאינדקס באופן עצמאי. לדוגמה, פרמטרים ספציפיים לאשכול 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
    
  2. מגדירים את מסד הנתונים לגיבויים.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=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;"
    

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

    • ‫BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים.
  3. מפעילים מחדש את AlloyDB Omni.

    sudo systemctl restart 18
    
  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=BACKUP_DIR \
    --stanza=omni \
    check
    

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

    • ‫BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים.

ביצוע גיבוי

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

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

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

    • ‫BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים.
  2. ביצוע גיבוי דיפרנציאלי.

    sudo -u postgres pgbackrest \
    --config-path=BACKUP_DIR \
    --stanza=omni \
    --type=diff backup
    

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

    • ‫BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים.
  3. דיווח על גיבויים.

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

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

    • ‫BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים.

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

כדי להגדיר גיבויים מתוזמנים, יוצרים משימת 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=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.

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