בדף הזה מוסבר איך להגדיר סימון נתונים שהשתנו (CDC) כדי להזרים נתונים ממסד נתונים של AlloyDB ל-PostgreSQL אל יעד נתמך, כמו BigQuery או Cloud Storage.
הגדרת קישוריות בין Datastream ל-AlloyDB
כדי לאפשר ל-Datastream להתחבר למכונת AlloyDB, צריך להגדיר שרת proxy של TCP בפרויקט הצרכן. תמונת ה-proxy של TCP זמינה לכל הלקוחות.
מפעילים את מאגר הנתונים של ה-proxy:
- מפעילים את Cloud Shell בפרויקט של הצרכן.
- מריצים את הסקריפט הבא כדי ליצור את פרוקסי ה-TCP ולהשבית את הגישור ברשת כדי למנוע בעיות בקישוריות:
gcloud compute instances create-with-container \ --zone=REGION_ID VM_NAME \ --container-image gcr.io/dms-images/tcp-proxy \ --tags=dms-tcp-proxy \ --container-env=SOURCE_CONFIG=ALLOYDB_IP:ALLOYDB_PORT \ --can-ip-forward \ --network=SOURCE_AND_DEST_VPC \ --machine-type=VM_TIER \ --metadata=startup-script='#! /bin/bash mkdir -p /etc/docker cat <<EOF > /etc/docker/daemon.json {"bridge":"none"} EOF systemctl restart docker'מחליפים את מה שכתוב בשדות הבאים:
- REGION_ID: האזור שבו רוצים ליצור את שרת ה-TCP Proxy.
- VM_NAME: השם של המכונה הווירטואלית.
- ALLOYDB_IP: כתובת ה-IP של מכונת AlloyDB ל-PostgreSQL.
- ALLOYDB_PORT: מספר היציאה של מכונת AlloyDB ל-PostgreSQL.
- SOURCE_AND_DEST_VPC: רשת ה-VPC שאליה מחוברים המקור והיעד.
- VM_TIER: סוג המכונה הווירטואלית.
דוגמה לפקודה עם פרמטרים מעודכנים:
gcloud compute instances create-with-container \ --zone=us-central1-c ds-tcp-proxy \ --container-image gcr.io/dms-images/tcp-proxy \ --tags=ds-tcp-proxy \ --container-env=SOURCE_CONFIG=10.16.0.5:5432 \ --can-ip-forward \ --network=default \ --machine-type=e2-micro --metadata=startup-script='#! /bin/bash mkdir -p /etc/docker cat <<EOF > /etc/docker/daemon.json {"bridge":"none"} EOF systemctl restart docker'מריצים את הסקריפט כדי להדפיס את כתובת ה-IP של TCP Proxy עם הקלטים הבאים:
gcloud compute instances describe VM_NAME \ --format="yaml(networkInterfaces[].networkIP)" \ --zone=REGION_IDמחליפים את מה שכתוב בשדות הבאים:
- VM_NAME: השם של המכונה הווירטואלית.
- REGION_ID: האזור שבו יצרתם את שרת ה-TCP Proxy.
(אופציונלי) יוצרים כלל חומת אש כדי להגביל את תעבורת הנתונים הנכנסת לשרת ה-TCP proxy:
gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --direction=INGRESS \ --priority=1000 \ --target-tags=dms-tcp-proxy \ --network=SOURCE_VPC \ --action=ALLOW \ --rules=tcp:ALLOYDB_PORT \ --source-ranges=IP_RANGEמחליפים את מה שכתוב בשדות הבאים:
- FIREWALL_RULE_NAME: השם של כלל חומת האש.
- SOURCE_VPC: רשת ה-VPC שאליה מחובר המקור.
- ALLOYDB_PORT: מספר היציאה של מכונת AlloyDB ל-PostgreSQL.
- IP_RANGE: טווח כתובות ה-IP שרוצים להגביל אליו את התנועה הנכנסת.
דוגמה לפקודה שמאפשרת תעבורת נתונים נכנסת (ingress) מכל כתובות ה-IP:
gcloud compute firewall-rules create ds-proxy1 \ --direction=INGRESS \ --priority=1000 \ --target-tags=ds-tcp-proxy \ --network=default \ --action=ALLOW \ --rules=tcp:5432
הגדרת AlloyDB לשכפול
הפעלה של פענוח לוגי במכונת AlloyDB הראשית. ב- Google Cloud, מגדירים את הערך של הדגל
alloydb.logical_decodingל-ON. מידע על עדכון של הדגלים של מסד הנתונים מופיע במאמר הגדרת הדגלים של מסד הנתונים של מופע.כדי להתחבר למופע AlloyDB באמצעות כתובת ה-IP של שרת ה-proxy של TCP, מריצים את הפקודה הבאה מכל מכונה וירטואלית באותו VPC:
psql -h PROXY_IP \ -U DB_USER \ -d DB_NAMEמחליפים את מה שכתוב בשדות הבאים:
- PROXY_IP: כתובת ה-IP של שרת ה-proxy ל-TCP.
- DB_USER: שם המשתמש במסד הנתונים של AlloyDB.
- DB_NAME: שם מסד הנתונים של AlloyDB.
מריצים את הפקודה הבאה כדי להעניק הרשאות שכפול למשתמש במסד הנתונים:
ALTER USER DB_USER WITH REPLICATION;
יוצרים אתר חדשות. מומלץ ליצור פרסום רק עבור הטבלאות שרוצים לשכפל. כך Datastream יכול לקרוא רק את הנתונים הרלוונטיים, והעומס על מסד הנתונים ועל Datastream יורד:
CREATE PUBLICATION PUBLICATION_NAME FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;
מחליפים את מה שכתוב בשדות הבאים:
- PUBLICATION_NAME: שם הפרסום. תצטרכו לספק את השם הזה כשתיצרו מקור נתונים באשף ליצירת מקורות נתונים ב-Datastream.
- SCHEMA: השם של הסכימה שמכילה את הטבלה.
- TABLE: השם של הטבלה שרוצים לשכפל.
אפשר גם ליצור פרסום לכל הטבלאות במסד הנתונים. שימו לב: הגישה הזו מגדילה את העומס גם על מסד הנתונים של המקור וגם על Datastream:
CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
מריצים את הפקודה הבאה כדי ליצור משבצת שכפול.
SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');מחליפים את מה שכתוב בשדות הבאים:
- REPLICATION_SLOT_NAME: השם של משבצת השכפול. תצטרכו לספק את השם הזה כשתיצרו מקור נתונים באשף ליצירת מקור נתונים ב-Datastream.
יצירת משתמש Datastream
כדי ליצור משתמש Datastream, מזינים את פקודת PostgreSQL הבאה:
CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
מחליפים את מה שכתוב בשדות הבאים:
- USER_NAME: השם של משתמש Datastream שרוצים ליצור.
- USER_PASSWORD: סיסמת הכניסה של משתמש Datastream שרוצים ליצור.
מעניקים למשתמש שיצרתם את ההרשאות הבאות:
GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME; GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME; ALTER DEFAULT PRIVILEGES IN SCHEMA SCHEMA_NAME GRANT SELECT ON TABLES TO USER_NAME;
מחליפים את מה שכתוב בשדות הבאים:
- SCHEMA_NAME: השם של הסכימה שרוצים לתת לה את ההרשאות.
- USER_NAME: המשתמש שרוצים להעניק לו את ההרשאות.