תהליך העבודה הבא מסביר את שלבי השכפול:
- מגדירים את הקובץ
pgbackrest.confכדי לגשת לגיבוי ב-Cloud Storage. - משתמשים בפקודות של
pgBackRestכדי לוודא שאפשר לגשת לגיבויים של המקור. - משתמשים בפקודות
pgBackRestכדי לשחזר את הגיבוי לשרת היעד.
לפני שמתחילים
- גישה לנתיב המלא של הקטגוריה של Cloud Storage שבה נמצא הגיבוי של אשכול מסד הנתונים של המקור. זו אותה נתיב שבה השתמשתם כשנוצר משאב
BackupPlanעבור אשכול מסד הנתונים של המקור. - נוצר אשכול מסד נתונים יחיד של AlloyDB Omni עם שרת יעד. למידע נוסף על התקנת AlloyDB Omni ב-Kubernetes, אפשר לעיין במאמר בנושא התקנת AlloyDB Omni.
- מוודאים שאתם מחוברים למסד הנתונים כמשתמש
postgres.
מגדירים את הקובץ pgBackRest בשרת היעד
מגדירים את קובץ pgBackRest כדי לאפשר לאשכול מסד הנתונים של היעד לגשת לקטגוריה של Cloud Storage שבה נמצאים הגיבויים של המקור.
בשרת היעד, עוברים לספרייה
alloydb-data.יוצרים קובץ תצורה
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: השם של קטגוריית
pgBackRestCloud Storage שיצרתם באשכול מסד הנתונים של המקור. זו לא כתובת ה-URL המלאה של הקטגוריה. אל תוסיפו את הקידומתgs://לשם הקטגוריה. - GCS_SOURCE_BACKUP_BUCKET_PATH: הנתיב של הספרייה שאליה האופרטור של AlloyDB Omni כותב גיבויים, בתוך קטגוריית Cloud Storage של אשכול מסד הנתונים של המקור. הנתיב חייב להיות מוחלט ולהתחיל ב-
/.
הערך של
repo1-gcs-key-typeמוגדר ל-autoכדי להשתמש בחשבון השירות של המכונה. מידע נוסף על אפשרויות אחרות זמין במאמר אפשרות לסוג מפתח מאגר GCS.- GCS_SOURCE_BACKUP_BUCKET_NAME: השם של קטגוריית
אימות גיבויים של המקור בשרת היעד
מתחברים לשרת היעד ומריצים פקודות pgBackRest כדי לוודא שיש גישה לגיבויים של אשכול מסד הנתונים של המקור בשרת היעד:
Docker
sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/pgsql --stanza=db --repo=1 infoPodman
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.
- בשרת היעד, מפסיקים את שירות מסד הנתונים:
Docker
docker stop CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEמומלץ לשנות את השם של ספריית הנתונים הנוכחית לשם אחר:
mv ~/alloydb-data/data ~/alloydb-data/data-oldמשנים את השם של הספרייה הזמנית
data-restoredלספריית הנתונים הנוכחית:mv ~/alloydb-data/data-restored ~/alloydb-data/dataמעדכנים את הערך
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'בשרת היעד, מפעילים את שירות מסד הנתונים:
Docker
docker start CONTAINER_NAMEPodman
podman start CONTAINER_NAME
אחרי ששירות מסד הנתונים מופעל, אפשר להתחבר למופע הראשי ולהריץ שאילתות כדי לוודא שהנתונים שוחזרו מהגיבוי. מידע נוסף זמין במאמר התחברות ל-AlloyDB Omni בשרת יחיד.