1. מבוא
ב-Codelab הזה נראה איך מגדירים את pgBackRest כדי לגבות ולשחזר פריסת RPM של AlloyDB Omni באמצעות אחסון אובייקטים שתואם ל-S3.
הערה: בשיעור Codelab הזה, תפרסו קובץ בינארי עצמאי של MinIO במכונה הווירטואלית כדי שישמש כנקודת קצה (endpoint) מקומית וקלה לשימוש לאחסון שתואמת ל-S3, למטרות הדרכה ובדיקה. עבור עומסי עבודה של ייצור, תמיד צריך להשתמש בפתרון אחסון תואם ל-S3 שנתמך ומתוחזק באופן פעיל, או באחסון אובייקטים בענן.
דרישות מוקדמות
- גישה לפרויקט ב-Google Cloud ול-Cloud Shell מ-Cloud Console.
- ה-SDK של Google Cloud (
gcloud) מותקן ומוגדר.
מה תלמדו
- איך מגדירים מכונה וירטואלית ב-Compute Engine ל-AlloyDB Omni RPM.
- איך מגדירים שרת מקומי לאחסון אובייקטים שתואם ל-S3 במכונה הווירטואלית.
- איך מגדירים את pgBackRest לשימוש באחסון אובייקטים שתואם ל-S3 כמאגר גיבוי.
- איך מבצעים גיבויים, מציגים אותם ומאמתים אותם.
- איך משחזרים נתונים מגיבוי
מה תצטרכו
- קבלת קישור לכתובת URL של חבילות RPM של AlloyDB Omni. הקישורים נשלחים לאימייל שלכם, שכולל את שרת כתובת ה-URL של המאגר. מאתחלים את משתנה הסביבה הבא כדי שכתובת ה-URL תהיה מוכנה לשימוש במהלך ה-codelab.
export ALLOYDB_OMNI_REPOSITORY_URL="..." - טרמינל פעיל עם גישה ל-Google Cloud. למטרה הזו אפשר להשתמש ב-Cloud Shell.
2. הגדרה ודרישות
הגדרת פרויקט
יצירת פרויקט ב-Google Cloud
- במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים פרויקט ב-Google Cloud או יוצרים פרויקט.
- הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בשיעור Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.

- פותחים את מסוף Google Cloud ולוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה.אפשר גם לפתוח את Cloud Shell באחת מהדרכים הבאות:
- אם משתמשים במסוף Google Cloud, מקישים על G ואז על S.
- לוחצים על הקישור הזה.
בדרך כלל חולפות כמה שניות עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום הפעולה, יופיע משהו כזה:
{: width="624"}
3. איך יוצרים מכונה וירטואלית ב-Compute Engine?
בקטע הזה, יוצרים מכונה וירטואלית (VM) בודדת ב-Compute Engine (GCE) באמצעות כלי שורת הפקודה gcloud. אתם משתמשים בתמונה של Rocky Linux 9, שתואמת באופן מלא ל-RPM של AlloyDB Omni.
- מגדירים משתני סביבה למזהה הפרויקט, לשם המכונה הווירטואלית, לסוג המכונה, לאזור ולמדינה.
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-pgbackrest" export MACHINE_TYPE="e2-standard-4" export ZONE="us-central1-c" export REGION="us-central1" - נכנסים באמצעות המשתמש בחשבון Google Cloud ומגדירים את פרויקט ברירת המחדל.
gcloud auth login gcloud config set project $PROJECT - יוצרים כלל חומת אש שמאפשר חיבורי SSH למכונה הווירטואלית.
gcloud compute firewall-rules create allow-ssh-alloydb-omni \ --project=$PROJECT \ --direction=INGRESS \ --action=allow \ --rules=tcp:22 \ --source-ranges="0.0.0.0/0" - מכיוון שהמכונה הווירטואלית נוצרת ללא כתובת IP ציבורית, צריך להגדיר Cloud Router ושער Cloud NAT כדי לאפשר למכונה הווירטואלית לגשת למאגרי חבילות חיצוניים ולהוריד את התוכנה הנדרשת.
gcloud compute routers create alloydb-omni-router \ --project=$PROJECT \ --network=default \ --region=$REGION gcloud compute routers nats create alloydb-omni-nat \ --project=$PROJECT \ --router=alloydb-omni-router \ --region=$REGION \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips - מוודאים שלרשת ה-VPC יש נתיב שער אינטרנט תקף שמוגדר כברירת מחדל. בסביבות משותפות או בסביבות ארגז חול מסוימות, סקריפטים לניקוי מסירים מדי פעם מסלולים שמוגדרים כברירת מחדל. המסלול הזה נדרש כדי ש-Cloud NAT יעביר תנועה יוצאת לאינטרנט.
gcloud compute routes create default-internet-route \ --project=$PROJECT \ --network=default \ --destination-range=0.0.0.0/0 \ --next-hop-gateway=default-internet-gateway - יוצרים מכונת וירטואלית ב-Compute Engine עם Rocky Linux 9 ודיסק אחסון מתמיד מאוזן בנפח 20GB. כדי לשפר את האבטחה, משתמשים בדגל
--no-addressכדי שלא תוקצה למכונה הווירטואלית כתובת IP ציבורית.gcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT \ --zone=$ZONE \ --machine-type=$MACHINE_TYPE \ --image-family=rocky-linux-9 \ --image-project=rocky-linux-cloud \ --boot-disk-size=20GB \ --boot-disk-type=pd-balanced \ --no-address - אחרי שיוצרים את המכונה הווירטואלית, מאמתים את הסטטוס שלה.
gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
4. הגדרת אחסון אובייקטים שתואם ל-S3
בקטע הזה מתחברים למכונה הווירטואלית, מכינים את הסביבה ומגדירים שרת מקומי לאחסון אובייקטים שתואם ל-S3 (minio) יחד עם לקוח S3 (mc) כדי לארח את קטגוריית הגיבוי.
- מתחברים למכונה הווירטואלית באמצעות SSH באמצעות שרת proxy לאימות זהויות (IAP). מכיוון שלמכונה הווירטואלית אין כתובת IP ציבורית,
gcloudינהל באופן אוטומטי את חיבור ה-SSH דרך IAP.gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - מתקינים את חבילת
policycoreutils-python-utilsכדי שאפשר יהיה להגדיר את מדיניות SELinux בהמשך, אם יהיה צורך.sudo dnf install -y policycoreutils-python-utils - מורידים את הקובץ הבינארי של השרת שתואם ל-S3 (
minio).curl -L -o minio \ https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z chmod +x minio sudo mv minio /usr/local/bin/ - יוצרים ספריית נתונים לשרת אחסון האובייקטים.
sudo mkdir -p /var/lib/s3-storage/data - מפעילים ברקע את השרת שתואם ל-S3 עם פרטי כניסה לדוגמה. שימו לב שהמפתח הסודי צריך להיות באורך של 8 תווים לפחות.
export MINIO_ROOT_USER="s3admin" export MINIO_ROOT_PASSWORD="s3password" nohup sudo env MINIO_ROOT_USER="$MINIO_ROOT_USER" \ MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \ /usr/local/bin/minio server /var/lib/s3-storage/data \ --console-address ":9001" \ > s3-server.log 2>&1 & - מוודאים שהשרת שתואם ל-S3 פועל.
ps aux | grep minio - מורידים ומתקינים את לקוח S3 (
mc) כדי לנהל קטגוריות.curl -L -o mc \ https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z chmod +x mc sudo mv mc /usr/local/bin/ - מגדירים את הכינוי של לקוח S3 (
s3repo) ויוצרים קטגוריה בשםalloydb-backups.mc alias set s3repo http://localhost:9000 s3admin s3password mc mb s3repo/alloydb-backups
5. התקנה של AlloyDB Omni
בקטע הזה, מתקינים ומגדירים את AlloyDB Omni.
- מגדירים משתני סביבה במכונה הווירטואלית לספריית הנתונים, לכתובת ה-URL של מאגר AlloyDB Omni ולסיסמה חזקה למשתמש האדמין של PostgreSQL
postgres. מחליפים את כתובת ה-URL בכתובת שקיבלתם מטופס ההרשמה. הערה: במעבדת הקוד הזו, העברת סיסמאות באמצעות משתני סביבה בשורת הפקודה (למשל,export PGDATA="/var/lib/alloydbomni" export ALLOYDB_OMNI_REPOSITORY_URL="..." export PGPASSWORD="YourStrongPassword123!"PGPASSWORD=$PGPASSWORD) משמשת כדי לפשט את התהליך, אבל היא עלולה לחשוף את הסיסמה ברשימות של תהליכים. בסביבת ייצור, מומלץ להשתמש בשיטות מאובטחות יותר כמו.pgpassקובץ או מנהל סודות. - יוצרים את ספריית הנתונים שבה AlloyDB Omni יאחסן את קובצי מסד הנתונים שלו.
sudo mkdir -p $PGDATA - מגדירים את מאגר YUM ב-VM על ידי יצירת קובץ תצורת המאגר.
sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF [alloydbomni] name=alloydbomni baseurl=$ALLOYDB_OMNI_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF - מעדכנים את המטמון של YUM.
sudo yum makecache - מתקינים את גרסה 18 של חבילת ה-RPM של AlloyDB Omni.
sudo dnf install -y alloydbomni18 - מאתחלים את מכונת מסד הנתונים של AlloyDB Omni.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - כדי להקל על ההגדרה, משביתים באופן זמני את מצב האכיפה של SELinux, בהתאם לשיטות המומלצות של Codelab.
sudo setenforce 0 - מכינים את מכונת מסד הנתונים של AlloyDB Omni.
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - מפעילים ומתחילים את שירות AlloyDB Omni
systemd.sudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - מוודאים ששירות AlloyDB Omni פעיל ופועל בצורה תקינה.
sudo systemctl status alloydbomni18
6. הגדרת pgBackRest
בקטע הזה נסביר איך להתקין את pgBackRest ממאגר AlloyDB Omni Common, להגדיר את /etc/pgbackrest/pgbackrest.conf כך שישתמש בקטגוריית אחסון אובייקטים שתואמת ל-S3 כמאגר גיבוי, ולהפעיל את הארכיון של WAL ב-AlloyDB Omni.
- מגדירים משתנה סביבה במכונה הווירטואלית לכתובת ה-URL של מאגר AlloyDB Omni Common. מחליפים את כתובת ה-URL בכתובת שקיבלתם מטופס ההרשמה.
export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..." - מגדירים את מאגר ה-YUM של pgBackRest ומתקינים את
pgbackrest-2.58.0.sudo tee /etc/yum.repos.d/pgbackrest.repo <<EOF [pgbackrest] name=Google Alloydb Omni Orchestrator baseurl=$ALLOYDB_OMNI_COMMON_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=0 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF sudo dnf install -y pgbackrest-2.58.0 - יוצרים את ספריות התור להדפסה והיומן עבור pgBackRest ומקצים את הבעלות למשתמש
postgres.sudo mkdir -p /var/log/pgbackrest sudo mkdir -p /var/lib/pgbackrest sudo chown -R postgres:postgres /var/log/pgbackrest sudo chown -R postgres:postgres /var/lib/pgbackrest - יוצרים
/etc/pgbackrest/pgbackrest.confומגדירים הרשאות קפדניות לקבצים.sudo mkdir -p /etc/pgbackrest/conf.d sudo tee /etc/pgbackrest/pgbackrest.conf <<EOF [global] spool-path=/var/lib/pgbackrest lock-path=/var/lib/pgbackrest # S3 Repository details repo1-type=s3 repo1-s3-endpoint=http://localhost:9000 repo1-s3-bucket=alloydb-backups repo1-s3-key=s3admin repo1-s3-key-secret=s3password repo1-s3-region=us-east-1 repo1-s3-uri-style=path repo1-path=/pgbackrest # Retention policy repo1-retention-full=3 repo1-retention-full-type=count repo1-retention-diff=16 # Force immediate checkpoint during backup start start-fast=y # Logging log-path=/var/log/pgbackrest log-level-console=info log-level-file=info # Compression compress-type=zst # Asynchronous WAL archiving 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=$PGDATA EOF sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf sudo chmod 640 /etc/pgbackrest/pgbackrest.conf - מאתחלים את ה-stanza של pgBackRest בתור המשתמש
postgres. מוודאים ש-sudo -u postgres pgbackrest --stanza=omni stanza-createstanza-create command end: completed successfullyמוצג בפלט. - הגדרת פרמטרים לארכיון ב-AlloyDB Omni באמצעות
psql.sudo -u postgres /usr/lib/postgresql/18/bin/psql \ -c "ALTER SYSTEM SET archive_mode = 'on';" \ -c "ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET wal_level = 'replica';" \ -c "ALTER SYSTEM SET max_wal_senders = 10;" - מפעילים מחדש את שירות AlloyDB Omni כדי להחיל את השינויים בארכיון.
sudo systemctl restart alloydbomni18 - אימות התקינות והקישוריות של ההגדרות של pgBackRest.
מוודאים ש-sudo -u postgres pgbackrest --stanza=omni checkcheck command end: completed successfullyמוצג בפלט.
7. ביצוע גיבוי
בקטע הזה תשתמשו ב-pgBackRest כדי לבצע גיבוי מלא וגיבוי דיפרנציאלי של מסד הנתונים שלכם ב-AlloyDB Omni לאחסון אובייקטים שתואם ל-S3.
- מפעילים גיבוי מלא באמצעות
pgbackrest.sudo -u postgres pgbackrest \ --stanza=omni \ --type=full backup - מפעילים גיבוי דיפרנציאלי באמצעות
pgbackrest. הערה: סוגי גיבוי נתמכים אחרים כולליםsudo -u postgres pgbackrest \ --stanza=omni \ --type=diff backupincr(מצטבר).
8. רשימה ואימות של גיבויים
בסעיף הזה, תפרטו את הגיבויים ותאמתו שהם הושלמו בהצלחה.
- מריצים את הפקודה
pgbackrest infoכדי לראות את רשימת הגיבויים. מוודאים שהפלט מציג אתsudo -u postgres pgbackrest \ --stanza=omni infostatus: okיחד עם פרטי הגיבוי של כל פקודת גיבוי שהפעלתם:- גיבוי מלא:
full backup:(לדוגמה,F 20260908-093545F) - גיבוי דיפרנציאלי:
diff backup:(לדוגמה,F_ D 20260908-093545F_20260908-094016D)
- גיבוי מלא:
- מאמתים את קובצי הגיבוי שמאוחסנים בדלי באמצעות לקוח S3 (
mc). הפלט אמור לכלול אתmc ls s3repo/alloydb-backups/pgbackrest/backup,archiveו-stanza.info.
9. שחזור נתונים מגיבוי
בקטע הזה, תפסיקו את שירות מסד הנתונים של AlloyDB Omni ותשחזרו נתונים מגיבוי ספציפי באמצעות pgbackrest.
זהירות: השחזור מפסיק את פעולת מסד הנתונים ודורך על כל הנתונים במסד הנתונים.
- מגדירים משתנה סביבה למזהה הגיבוי שרוצים לשחזר ממנו. מחליפים את הערך במזהה הגיבוי שמוצג בפלט של
pgbackrest info.export BACKUPID="20260908-093545F" - מפסיקים את שירות AlloyDB Omni ומוודאים שהוא לא פעיל.
מוודאים שהפלט מציגsudo systemctl stop alloydbomni18 sudo systemctl status alloydbomni18Active: inactive. - מריצים את הפקודה
pgbackrest restoreעם האפשרות--deltaכדי לשחזר את מסד הנתונים מהגיבוי שנבחר. מוודאים ש-sudo -u postgres pgbackrest \ --stanza=omni \ --set=$BACKUPID \ --delta restorerestore command end: completed successfullyמוצג בפלט. - מפעילים את שירות AlloyDB Omni ומוודאים שהוא פעיל ופועל.
מוודאים שהפלט מציגsudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running).
10. ניקוי וסקר
אחרי שמסיימים את ה-codelab, אפשר למחוק את המשאבים של Google Cloud כדי להימנע מחיובים לא רצויים.
- מתנתקים מהסשן של SSH במכונה הווירטואלית כדי לחזור לטרמינל המקומי של Cloud Shell.
exit - מוחקים את המכונה הווירטואלית ב-Compute Engine.
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet - מוחקים את כלל חומת האש שנוצר לגישת SSH.
gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet - מוחקים את שער Cloud NAT ואת Cloud Router.
gcloud compute routers nats delete alloydb-omni-nat --router=alloydb-omni-router --region=$REGION --project=$PROJECT --quiet gcloud compute routers delete alloydb-omni-router --region=$REGION --project=$PROJECT --quiet - מוחקים את המסלול המותאם אישית.
gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
11. מזל טוב
כל הכבוד, סיימתם את ה-Codelab! הגדרתם בהצלחה את pgBackRest לגיבוי ולשחזור של פריסת AlloyDB Omni RPM באמצעות אחסון אובייקטים שתואם ל-S3.
מה נכלל
- איך מגדירים מכונה וירטואלית ב-Compute Engine ל-AlloyDB Omni RPM.
- איך מגדירים קטגוריית אחסון אובייקטים שתואמת ל-S3.
- איך מגדירים את pgBackRest עם מאגר שתואם ל-S3.
- איך מבצעים גיבויים מלאים וגיבויים דיפרנציאליים, איך מציגים אותם ואיך מאמתים אותם.
- איך משחזרים נתונים מגיבוי באמצעות pgBackRest.
מידע נוסף מופיע במאמר סקירה כללית על AlloyDB Omni.