אשכולות שמופעל בהם TDE תומכים בגיבויים ובשחזורים שקופים באמצעות pgBackRest, ואין צורך לבצע שלבים נוספים. מידע נוסף זמין במאמר בנושא יצירת אשכול עם TDE.
למידע על Kubernetes, אפשר לעיין במאמר בנושא גיבוי ושחזור ב-Kubernetes.
מידע נוסף על pgBackRest זמין במדריך למשתמש.
לפני שמתחילים
לפני שמגדירים את AlloyDB Omni לעבודה עם pgBackRest, צריך לבצע את הפעולות הבאות:
- התקנה והפעלה של AlloyDB Omni בשרת שבשליטתכם.
- מגדירים מאגר נתונים קבוע למכונה של AlloyDB Omni.
הגדרה בסיסית עם גיבויים מקומיים
השלבים בקטע הזה מסבירים איך להגדיר את pgBackRest באופן בסיסי. בהגדרות בסיסיות אי אפשר להפעיל גיבויים לפי לוח זמנים. מידע נוסף זמין במאמר הגדרת גיבויים מתוזמנים.
pgBackRest הוא מוצר גמיש של צד שלישי שתואם ל-AlloyDB Omni, ולכן אתם יכולים לשנות כל אחד מהשלבים האלה בהתאם לצרכים ולהעדפות שלכם.
התקנת נפח גיבוי בקונטיינר
למטרות ארגון, מומלץ מאוד ליצור ולטעון אמצעי אחסון נפרד לגיבויים של pgBackRest. כדי להגדיר אמצעי אחסון חדש:
אם הקונטיינר פועל, צריך לעצור אותו ולהסיר אותו.
Docker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAMEDocker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAMEמחליפים את המשתנה הבא:
-
CONTAINER_NAME: השם שנתתם למאגר התגים.
-
יוצרים ספריית גיבוי במערכת הקבצים של הקונטיינר.
Docker
mkdir -p BACKUP_DIR
Docker
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
מחליפים את המשתנה הבא:
-
BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים.
-
יוצרים מחדש את הקונטיינר עם אמצעי האחסון החדש של הגיבויים.
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שנתתם למאגר התגים. -
NEW_PASSWORD: הסיסמה שהוקצתה למשתמשpostgresשל הקונטיינר החדש אחרי שהוא נוצר. שימו לב ש-NEW_PASSWORDיגדיר סיסמה חדשה רק אםDATA_DIRהוא מיקום חדש. -
DATA_DIR: הנתיב לספרייה המארחת שבה הנתונים מאוחסנים. -
BACKUP_DIR: ספריית המארח שבה יישמרו הגיבויים. -
HOST_PORT: יציאת TCP במחשב המארח שאליה הקונטיינר צריך לפרסם את היציאה שלו5432. כדי להשתמש ביציאת ברירת המחדל של PostgreSQL גם במחשב המארח, מציינים את5432.
-
צריך להגדיר את ספריית הגיבויים במאגר כך ש-
postgresיוכל לקרוא אותה.Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
מחליפים את המשתנה הבא:
-
CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים.
-
הגדרת גיבויים מקומיים
pgBackRest יוצר ספריות משנה לכל גיבוי שמתבצע, וכולל קובץ מניפסט בטקסט פשוט.
ב-pgBackRest, המונח stanza מתייחס להגדרה של אשכול מסדי נתונים של PostgreSQL. שם ה-stanza הוא שרירותי ולא צריך להיות זהה לשם של שרת המארח, אשכול PostgreSQL או מסד הנתונים. במסמכי התיעוד של pgBackRest מומלץ לתת ל-stanza שם לפי הפונקציה של האשכול.
המאגר הוא המקום שבו נכתבים הגיבויים. pgBackRest תומך בכתיבה ליותר ממאגר אחד בבית נתון. רוב הפרמטרים של ההגדרות שקשורים למאגרים מסומנים באינדקס עם ערך מספרי. לדוגמה, repo1-. גם פרמטרים שקשורים לאשכולות PostgreSQL עוברים אינדוקס בנפרד. לדוגמה, פרמטרים ספציפיים לאשכול PostgreSQL הראשון בבית מתחילים ב-pg1-.
ב-pgBackRest משתמשים בקובץ תצורה שנקרא pgbackrest.conf, שכולל פרמטרים גלובליים ופרמטרים ספציפיים ל-stanza.
כדי ליצור קובץ תצורה לגיבוי של אשכול AlloyDB Omni ולהפעיל אותו, יוצרים את הקובץ pgbackrest.conf בספריית הגיבויים בצד המארח שיצרתם בהוספת נפח גיבוי לקונטיינר או ביצירת ספריית גיבוי.
[global]
# Paths (all mandatory):
repo1-path=/var/lib/postgresql/backups
spool-path=/var/lib/postgresql/backups/spool
lock-path=/var/lib/postgresql/backups
# 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/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=/tmp
pg1-path=/var/lib/postgresql/data
חלק מהפרמטרים הם חובה, אבל אפשר לשנות פרמטרים אחרים כדי להתאים אותם לדרישות הספציפיות שלכם, למשל:
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) שמשתמש בפרמטרים שהוגדרו בקובץ התצורה.
כדי להגדיר את מסד הנתונים לגיבויים, פועלים לפי השלבים הבאים:
יוצרים את הבית באמצעות הפקודה
stanza-create.Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
מחליפים את המשתנה הבא:
-
CONTAINER_NAME: השם שנתתם למאגר התגים.
-
מגדירים את מסד הנתונים לגיבויים.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/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;"
מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים.
-
מפעילים מחדש את מאגר התגים.
Docker
docker restart CONTAINER_NAME
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שנתתם למאגר התגים.
-
מאמתים את הגדרות הגיבוי.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שנתתם למאגר התגים.
-
מבצעים בדיקת pgBackRest.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שנתתם למאגר התגים.
-
ביצוע גיבוי
מבצעים גיבוי מלא.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full backup
מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים.
-
מבצעים גיבוי דיפרנציאלי.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff backup
מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים.
-
דיווח על גיבויים.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
מחליפים את המשתנים הבאים:
-
CONTAINER_NAME: השם שנתתם למאגר התגים.
-
הגדרת גיבויים מתוזמנים
כדי להגדיר גיבויים מתוזמנים, יוצרים משימת 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, מבצעים את השלבים הבאים:
מגדירים את ההרשאות של הקטגוריה כדי לאפשר לחשבון השירות שמחובר למכונה הווירטואלית לכתוב לקטגוריה. לשם כך, צריך להגדיר בחשבון השירות את התפקיד 'משתמש באובייקט אחסון' ב-IAM.
מוסיפים את השורות האלה לקטע
[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 ישמור את הגיבויים.
-
מאתחלים את מיקום הגיבוי בענן באמצעות הפקודה
pgbackrest stanza-create:Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
מחליפים את המשתנה הבא:
-
CONTAINER_NAME: השם שנתתם למאגר התגים.
-
אחרי שמאתחלים את מאגר הגיבויים בקטגוריה של Cloud Storage באמצעות הפקודה pgbackrest stanza-create, יכול להיות ש-pgBackRest יגבה בשני מיקומים:
המיקום במערכת הקבצים המקומית, שמוגדר במקום אחר בקובץ ההגדרות כ-
repo1-path. זהו מיקום ברירת המחדל כשלא מציינים את--repoבפקודהpgbackrest.קטגוריה של Cloud Storage, מוגדרת באמצעות הנחיות ההגדרה
repo2-gcs-bucketשמוגדרות בדוגמה הזו. כדי להשתמש בקטגוריה של Cloud Storage, מציינים את--repo=2בפקודהpgbackrest.