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

בוחרים גרסה של מאמר העזרה:

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

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

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

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

למידע על Kubernetes, אפשר לעיין במאמר בנושא גיבוי ושחזור ב-Kubernetes.

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

לפני שמשחזרים אשכול AlloyDB Omni, צריך לוודא שיש לכם את הדברים הבאים:

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

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

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

    Docker

    docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Docker

    docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Podman

    podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

    Podman

    podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
    

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

    • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.

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

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest version
    

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest version
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest version
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest version
    

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

    • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.

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

  • עצירת קונטיינר AlloyDB Omni

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

    Docker

    docker stop CONTAINER_NAME
    docker rm CONTAINER_NAME

    Docker

    docker stop CONTAINER_NAME
    docker rm CONTAINER_NAME

    Podman

    podman stop CONTAINER_NAME
    podman rm CONTAINER_NAME

    Podman

    podman stop CONTAINER_NAME
    podman rm CONTAINER_NAME

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

    • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.

    יצירת קונטיינר AlloyDB Omni במצב סרק

    Docker

    docker run -d --name CONTAINER_NAME \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v BACKUP_DIR:/var/lib/postgresql/backups \
    -p HOST_PORT:5432 \
    --restart=always \
    google/alloydbomni:latest sleep infinity
    

    Docker

    docker run -d --name CONTAINER_NAME \
    -v DATA_DIR:/var/lib/postgresql/data \
    -v BACKUP_DIR:/var/lib/postgresql/backups \
    -p HOST_PORT:5432 \
    --restart=always \
    google/alloydbomni:latest sleep infinity
    

    Podman

    podman run -d --name CONTAINER_NAME \
    -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 sleep infinity
    

    Podman

    podman run -d --name CONTAINER_NAME \
    -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 sleep infinity
    

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

    • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.
    • ‫DATA_DIR: הנתיב לספריית המארח שבה הנתונים מאוחסנים.
    • ‫BACKUP_DIR: נתיב של ספרייה חיצונית שבה נשמרים הגיבויים.
    • ‫HOST_PORT: יציאת TCP במכונת המארח שאליה הקונטיינר צריך לפרסם את היציאה שלו 5432. כדי להשתמש ביציאת ברירת המחדל של PostgreSQL במחשב המארח, מציינים 5432.

    הסרת ספריית הנתונים

    כדי לנקות את אשכול מסד הנתונים של AlloyDB Omni, מסירים את ספריית הנתונים.

    Docker

    docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
    

    Docker

    docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
    

    Podman

    podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
    

    Podman

    podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
    

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

    • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.

    איך מוודאים שהגיבויים גלויים

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    info
    

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    info
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    info
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    info
    

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

    • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.
    • ‫STANZA_NAME: השם של הפיסקה שיצרתם. לדוגמה, my-stanza.

    שחזור הגיבוי

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    restore
    

    Docker

    docker exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    restore
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    restore
    

    Podman

    podman exec -u postgres CONTAINER_NAME pgbackrest \
    --config-path=/var/lib/postgresql/backups \
    --stanza=STANZA_NAME \
    restore
    

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

    ‫* CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1. * ‫STANZA_NAME: השם של קטע ה-stanza שיצרתם. לדוגמה, my-stanza.

    הסרת קונטיינר AlloyDB Omni במצב סרק

    Docker

    docker kill CONTAINER_NAME
    docker rm CONTAINER_NAME

    Docker

    docker kill CONTAINER_NAME
    docker rm CONTAINER_NAME

    Podman

    podman kill CONTAINER_NAME
    podman rm CONTAINER_NAME

    Podman

    podman kill CONTAINER_NAME
    podman rm CONTAINER_NAME

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

    • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.

    יצירת קונטיינר AlloyDB Omni

    Docker

    docker run -d --name CONTAINER_NAME \
    -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 \
    -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 \
    -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 \
    -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: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.
    • ‫DATA_DIR: הנתיב לספריית המארח שבה הנתונים מאוחסנים.
    • ‫BACKUP_DIR: נתיב של ספרייה חיצונית שבה נשמרים הגיבויים.
    • ‫HOST_PORT: יציאת TCP במכונת המארח שאליה הקונטיינר צריך לפרסם את היציאה שלו 5432. כדי להשתמש ביציאת ברירת המחדל של PostgreSQL במחשב המארח, מציינים 5432.

      בדיקה שהופעל AlloyDB Omni

      Docker

      docker logs -f CONTAINER_NAME
      

      Docker

      docker logs -f CONTAINER_NAME
      

      Podman

      podman logs -f CONTAINER_NAME
      

      Podman

      podman logs -f CONTAINER_NAME
      

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

      • ‫CONTAINER_NAME: השם שבו השתמשתם עבור מאגר התגים. לדוגמה, my-omni-1.

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

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