שיבוט של אשכול מסדי נתונים בשרת יחיד באמצעות גיבוי ב-Cloud Storage

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

בדף הזה מוסבר איך לשכפל אשכול מסדי נתונים בשרת יחיד באמצעות גיבוי של Cloud Storage.

תהליך העבודה הבא מסביר את שלבי השכפול:

  1. מגדירים את הקובץ pgbackrest.conf כדי לגשת לגיבוי ב-Cloud Storage.
  2. משתמשים בפקודות של pgBackRest כדי לוודא שאפשר לגשת לגיבויים של המקור.
  3. משתמשים בפקודות pgBackRest כדי לשחזר את הגיבוי לשרת היעד.

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

  • גישה לנתיב המלא של הקטגוריה של Cloud Storage שבה נמצא הגיבוי של אשכול מסד הנתונים של המקור. זו אותה נתיב שבה השתמשתם כשנוצר משאב BackupPlan עבור אשכול מסד הנתונים של המקור.
  • נוצר אשכול מסד נתונים יחיד של AlloyDB Omni עם שרת יעד. למידע נוסף על התקנת AlloyDB Omni ב-Kubernetes, אפשר לעיין במאמר בנושא התקנת AlloyDB Omni.
  • מוודאים שאתם מחוברים למסד הנתונים כמשתמש postgres.

מגדירים את הקובץ pgBackRest בשרת היעד

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

  1. בשרת היעד, עוברים לספרייה alloydb-data.

  2. יוצרים קובץ תצורה pgBackRest כדי לגשת לגיבויים שמאוחסנים ב-Cloud Storage:

      $ cat << EOF > /backup/pgbackrest.conf
      [db]
      pg1-path=/mnt/disks/pgsql/data-restored
      pg1-socket-path=/tmp
      pg1-user=pgbackrest
      [global]
      log-path=/obs/pgbackrest
      log-level-file=info
      repo1-type=gcs
      repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME
      repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH
      repo1-storage-ca-file=/etc/ssl/certs/ca-certificates.crt
      repo1-retention-full=9999999
      repo1-gcs-key-type=auto

    מחליפים את מה שכתוב בשדות הבאים:

    • GCS_SOURCE_BACKUP_BUCKET_NAME: השם של קטגוריית pgBackRest Cloud Storage שיצרתם באשכול מסד הנתונים של המקור. זו לא כתובת ה-URL המלאה של הקטגוריה. אל תוסיפו את הקידומת gs:// לשם הקטגוריה.
    • GCS_SOURCE_BACKUP_BUCKET_PATH: הנתיב של הספרייה שאליה האופרטור של AlloyDB Omni כותב גיבויים, בתוך קטגוריית Cloud Storage של אשכול מסד הנתונים של המקור. הנתיב חייב להיות מוחלט ולהתחיל ב-/.

    הערך של repo1-gcs-key-type מוגדר ל-auto כדי להשתמש בחשבון השירות של המכונה. מידע נוסף על אפשרויות אחרות זמין במאמר אפשרות לסוג מפתח מאגר GCS.

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

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

Docker

sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

Podman

sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 info

מחליפים את CONTAINER_NAME בשם של קונטיינר חדש של AlloyDB Omni – לדוגמה, my-omni-1.

זוהי דוגמה לתשובה:

    stanza: db
      status: ok
      cipher: none
      db (current)
          wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
          full backup: 20240213-231400F
              timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
              wal start/stop: 000000010000000000000003 / 000000010000000000000003
              database size: 38.7MB, database backup size: 38.7MB
              repo1: backup set size: 4.6MB, backup size: 4.6MB
          incr backup: 20240213-231400F_20240214-000001I
              timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
              wal start/stop: 00000001000000000000000D / 00000001000000000000000D
              database size: 38.7MB, database backup size: 488.3KB
              repo1: backup set size: 4.6MB, backup size: 84.2KB
              backup reference list: 20240213-231400F

חותמות הזמן בתשובה משמשות לשחזור הגיבוי המלא או לשחזור מנקודת זמן מחלון השחזור.

שחזור הגיבוי בשרת היעד

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

הנה כמה דוגמאות לפקודות שחזור של pgBackRest:

  • שחזור מגיבוי

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
  • שחזור מנקודה מסוימת בזמן

    pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info

העתקת הנתונים לשרת היעד

אחרי שפקודת השחזור מסתיימת בהצלחה, אפשר להעתיק את הנתונים מהספרייה הזמנית /mnt/disks/pgsql/data-restored לספרייה הנוכחית /alloydb-data/data.

  1. בשרת היעד, מפסיקים את שירות מסד הנתונים:

Docker

docker stop CONTAINER_NAME

Podman

podman stop CONTAINER_NAME
  1. מומלץ לשנות את השם של ספריית הנתונים הנוכחית לשם אחר:

      mv ~/alloydb-data/data  ~/alloydb-data/data-old
  2. משנים את השם של הספרייה הזמנית data-restored לספריית הנתונים הנוכחית:

      mv ~/alloydb-data/data-restored ~/alloydb-data/data
  3. מעדכנים את הערך pg1-path בקובץ postgresql.auto.conf כדי לטעון את הנתונים ששוחזרו:

    vim ~/alloydb-data/data/postgresql.auto.conf
    # Verify postgresql.auto.conf.
    # Do not edit this file manually!
    # It will be overwritten by the ALTER SYSTEM command.
    # Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11
    restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"'
    recovery_target = 'immediate'
    recovery_target_action = 'promote'
    recovery_target_timeline = 'current'
  1. בשרת היעד, מפעילים את שירות מסד הנתונים:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

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

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