מידע על Kubernetes מופיע במאמר גיבוי ושחזור ב-Kubernetes.
pgBackRest הוא כלי גמיש לגיבוי ושחזור של PostgreSQL. AlloyDB Omni תואם ל-PostgreSQL, ולכן אפשר להשתמש ב-pgBackRest כדי להגן על הנתונים ב-AlloyDB Omni באמצעות גיבויים ידניים, מתוזמנים ורציפים.
pgBackRest כותב את נתוני הגיבוי למאגרים מקומיים, מרוחקים או מבוססי-ענן. אחרי שיוצרים לפחות מאגר אחד, אפשר להשתמש ב-pgBackRest כדי לשחזר את נתוני AlloyDB Omni בשיטות שונות, כולל שחזור לנקודת זמן מסוימת (PITR).
AlloyDB Omni כולל את pgBackRest בקונטיינר Docker שלו. המשמעות היא שאתם יכולים להשתמש ב-pgBackRest כדי לגבות ולשחזר את הנתונים שלכם ב-AlloyDB Omni בלי שתצטרכו להתקין תוכנה נוספת.
מידע נוסף על pgBackRest זמין במדריך למשתמש.
לפני שמתחילים
לפני שמגדירים את AlloyDB Omni לעבודה עם pgBackRest, צריך לוודא שAlloyDB Omni מותקן ופועל בשרת שאתם שולטים בו.
הערה לגבי נתיבים של מערכת קבצים
תוכנת pgBackRest שכלולה ב-AlloyDB Omni פועלת באותו קונטיינר Docker כמו AlloyDB Omni. לכן, כל הנתיבים במערכת הקבצים שאתם מספקים ל-pgBackRest דרך קובץ ההגדרות או כארגומנטים בשורת הפקודה הם מיקומים במערכת הקבצים של הקונטיינר, ולא במערכת הקבצים של המכונה המארחת.
רבים מהפקודות והדוגמאות בדף הזה מתייחסים לספריית הנתונים שלכם כאל /var/lib/postgresql/data, ללא קשר למיקום של ספריית הנתונים במערכת המארחת. הסיבה לכך היא ש-AlloyDB Omni טוען את ספריית הנתונים אל /var/lib/postgresql/data במערכת הקבצים של הקונטיינר. כתוצאה מכך, אפשר להשתמש בספריית הנתונים כמיקום לאחסון של הגדרות ומאגרי pgBackRest בלי לבצע הגדרה נוספת.
אם רוצים להגדיר את pgBackRest שמבוסס על קונטיינר כך שיקרא או יכתוב לספריות במערכת הקבצים של המחשב המארח מחוץ לספריית הנתונים של AlloyDB Omni, צריך להפוך את הספריות האלה לזמינות לקונטיינר.
הגדרה בסיסית עם גיבויים מקומיים
השלבים בקטע הזה מנחים אתכם בהגדרה בסיסית של pgBackRest, כולל קובץ הגדרה קצר שמנחה את pgBackRest לכתוב נתוני גיבוי רציפים לספריית משנה של ספריית הנתונים של AlloyDB Omni.
pgBackRest הוא מוצר גמיש של צד שלישי שתואם ל-AlloyDB Omni, ולכן אתם יכולים לשנות את השלבים האלה בהתאם לצרכים ולהעדפות שלכם. אם משנים נתיבים במערכת הקבצים, חשוב לזכור שהם צריכים להיות גלויים למאגר התגים. אפשר לעיין בהערה לגבי נתיבים במערכת הקבצים.
הגדרה של אימות מהימן באמצעות Unix-socket
מאפשרים למכונת המארח של AlloyDB Omni לאמת את המשתמש postgres בשרת מסד הנתונים בלי לדרוש סיסמה. כך אפשר לפשט את השלבים הבאים.
מוסיפים את השורה הבאה לקובץ
DATA_DIR/pg_hba.conf:local all postgres trustמחליפים את DATA_DIR בנתיב של מערכת הקבצים לספריית הנתונים, לדוגמה,
/home/$USER/alloydb-data.מפעילים מחדש את AlloyDB Omni:
docker restart CONTAINER_NAMEמחליפים את
CONTAINER_NAMEבשם שהקציתם לקונטיינר AlloyDB Omni כשהתקנתם אותו – לדוגמה,my-omni.
יצירה והגדרה של מאגר גיבוי
קובץ ההגדרות שנוצר בקטע הזה הוא דוגמה, והוא מאפשר הגדרה מינימלית של גיבויים רציפים שמאוחסנים באופן מקומי. אפשר לשנות את הקובץ הזה בכל דרך שמתאימה לצרכים שלכם. מידע נוסף זמין במאמר הגדרת קטע cluster.
יוצרים ספריית משנה
backupsבספריית הנתונים של AlloyDB Omni:mkdir DATA_DIR/backupsיוצרים קובץ בשם
pgbackrest.confבתוך ספריית הנתונים ומעתיקים אליו את התוכן הבא:[global] # Paths (all mandatory): repo1-path=/var/lib/postgresql/data/backups spool-path=/var/lib/postgresql/data lock-path=/var/lib/postgresql/data # 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=/var/lib/postgresql/data/backups 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=/var/lib/postgresql/data pg1-path=/var/lib/postgresql/data/dataמאתחלים את מיקום הגיבוי באמצעות הפקודה
pgbackrest stanza-create:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create
הגדרת מסד הנתונים לגיבויים רציפים
כדי להפעיל גיבויים רציפים, מריצים את הפקודה הבאה כדי להגדיר כמה פרמטרים של PostgreSQL:
docker exec CONTAINER_NAME psql -h localhost -U postgres \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --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;"מפעילים מחדש את AlloyDB Omni:
docker restart CONTAINER_NAME
הרצת פקודות pgBackRest
השלמת השלבים שבקטע הקודם מגדירה את pgBackRest לעבודה עם שרת AlloyDB Omni. כדי לבדוק את סטטוס הגיבוי, ליצור גיבויים ידניים ולבצע משימות אחרות, אפשר לעיין בחומרי העזר בנושא פקודות.
מומלץ להריץ פקודות pgBackRest ישירות ממחשב המארח שבו מותקן קונטיינר AlloyDB Omni, באמצעות הפקודה docker exec. לדוגמה, כדי ליצור גיבוי ידני, משתמשים בפקודה pgbackrest backup. משנים אותה כך שהיא תפעל בתוך פקודה docker
exec, ותפנה לקובץ התצורה שיצרתם קודם:
docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backupאפשר גם להשתמש במשתני סביבה כדי להגדיר את המיקום של קובץ ההגדרות של pgBackRest. מידע נוסף זמין במאמר בנושא אפשרות נתיב ההגדרה.
הגדרת גיבויים מתוזמנים
כדי להגדיר גיבויים מתוזמנים, יוצרים משימת cron שמריצה את הפקודה pgbackrest backup בתדירות הרצויה. מידע נוסף זמין במאמר בנושא תזמון גיבוי.
הגדרות בהתאמה אישית וגיבויים מרחוק
אחרי שמוודאים שההגדרה הבסיסית פועלת, אפשר לשנות את קובץ ההגדרה בהתאם לצרכים ולהעדפות שלכם באמצעות האפשרויות שמפורטות בהפניה להגדרות של pgBackRest.
זה כולל ציון של מאגרי גיבוי נוספים שנמצאים במכונות מרוחקות או בענן. אם מגדירים כמה מאגרים, pgBackRest כותב לכולם בו-זמנית כפעולת הגיבוי שמוגדרת כברירת מחדל.
לדוגמה, pgBackRest תומך בשימוש בקטגוריה של Cloud Storage כמאגר גיבוי, עם מספר אפשרויות הגדרה קשורות. בקטע הבא מוצגת דרך אחת להשתמש באפשרויות האלה.
דוגמה להגדרה באמצעות Cloud Storage
השלבים בקטע הזה מבוססים על קובץ ההגדרות שהוצג בקטע הגדרה בסיסית עם גיבויים מקומיים. השינויים האלה בקובץ מגדירים מאגר גיבויים שני בקטגוריה של Cloud Storage, שאפשר לגשת אליו דרך ניהול זהויות והרשאות גישה (IAM).
סגנון האימות האוטומטי בדוגמה הזו מחייב הפעלה של קלאסטר AlloyDB Omni במכונה וירטואלית של Compute Engine. אם אתם לא מריצים את AlloyDB Omni במכונה וירטואלית (VM) של Compute Engine, אתם עדיין יכולים לגבות לקטגוריה של Cloud Storage באמצעות שיטת אימות אחרת, כמו Google Cloud מפתח של חשבון שירות שנשמר במערכת הקבצים המקומית.
כדי להרחיב את קובץ התצורה הקודם ולהגדיר מאגר pgBackRest שמבוסס על Cloud Storage, מבצעים את השלבים הבאים:
מגדירים את ההרשאות של הקטגוריה כדי לאפשר לחשבון השירות שמצורף למכונה הווירטואלית לכתוב בקטגוריה. לשם כך צריך להגדיר בחשבון השירות הזה את תפקיד ה-IAM 'משתמש אובייקטים של אחסון'.
מוסיפים את השורות הבאות לקובץ
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=/pgbackrest # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=countמחליפים את BUCKET_NAME בשם של הקטגוריה ב-Cloud Storage שבה רוצים ש-pgBackRest ישמור את הגיבויים.
מאתחלים את מיקום הגיבוי בענן באמצעות הפקודה
pgbackrest stanza-create:docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create
אחרי שמאתחלים את מאגר הגיבוי בקטגוריה של Cloud Storage באמצעות הפקודה pgbackrest stanza-create, pgBackRest מגבה לשני מיקומים:
המיקום במערכת הקבצים המקומית, שמוגדר במקום אחר בקובץ ההגדרות כ-
repo1-path.קטגוריה של Cloud Storage, שמוגדרת באמצעות הנחיות התצורה
repo2-שהוגדרו בדוגמה הזו.