הגדרת מסד נתונים של AlloyDB ל-PostgreSQL ל-CDC

כדי לשכפל נתונים ממסד נתונים של AlloyDB ל-PostgreSQL ליעד נתמך כמו BigQuery או Cloud Storage, קודם צריך להכין את מכונת המקור ל-Datastream. כדי לתעד שינויים שוטפים במסד הנתונים, צריך להגדיר שרת proxy ל-TCP, להפעיל פענוח לוגי, ליצור פרסום ומשבצת שכפול ולהגדיר משתמש ב-Datastream.

הגדרת הקישוריות בין Datastream ל-AlloyDB

כדי לאפשר ל-Datastream להתחבר למופע AlloyDB, צריך להגדיר שרת proxy של TCP בפרויקט של הצרכן. התמונה של שרת ה-proxy של TCP זמינה לכל הלקוחות.

  1. מפעילים את מאגר ה-Proxy:

    1. מפעילים את Cloud Shell בפרויקט של הצרכן.
    2. מריצים את הסקריפט הבא כדי ליצור את פרוקסי ה-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: האזור שבו רוצים ליצור את שרת ה-proxy ל-TCP.
    • ‫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'
    
  2. מריצים את הסקריפט כדי להדפיס את כתובת ה-IP של TCP Proxy עם הקלטים הבאים:

    gcloud compute instances describe VM_NAME \
      --format="yaml(networkInterfaces[].networkIP)" \
      --zone=REGION_ID
    

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

    • ‫VM_NAME: השם של המכונה הווירטואלית.
    • ‫REGION_ID: האזור שבו יצרתם את שרת ה-proxy של TCP.
  3. (אופציונלי) יוצרים כלל של חומת אש כדי להגביל את תעבורת הנתונים הנכנסת לשרת ה-proxy של TCP:

    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 שרוצים להגביל אליו את התנועה הנכנסת.

    דוגמה לפקודה שמאפשרת תעבורת נתונים נכנסת מכל כתובות ה-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 לרפליקציה

  1. מפעילים פענוח לוגי במכונת AlloyDB הראשית. ב- Google Cloud, מגדירים את הערך של הדגל alloydb.logical_decoding ל-ON. מידע על עדכון הדגלים של מסד הנתונים זמין במאמר הגדרת הדגלים של מסד הנתונים של מופע.

  2. כדי להתחבר למכונה של 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.
  3. מריצים את הפקודה הבאה כדי להעניק הרשאות רפליקציה למשתמש במסד הנתונים:

    ALTER USER DB_USER WITH REPLICATION;
    
  4. יוצרים אתר חדשות. מומלץ ליצור פרסום רק עבור הטבלאות שרוצים לשכפל. כך 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;
    
  5. מריצים את הפקודה הבאה כדי ליצור משבצת שכפול.

    SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');
    

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

    • ‫REPLICATION_SLOT_NAME: השם של מיקום הרפליקציה. תצטרכו לציין את השם הזה כשתצרו סטרימינג באשף ליצירת סטרימינג ב-Datastream.

יצירת משתמש ב-Datastream

  1. כדי ליצור משתמש ב-Datastream, מזינים את הפקודה הבאה ב-PostgreSQL:

    CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
    

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

    • ‫USER_NAME: השם של משתמש Datastream שרוצים ליצור.
    • ‫USER_PASSWORD: סיסמת הכניסה של משתמש Datastream שרוצים ליצור.
  2. נותנים למשתמש שיצרתם את ההרשאות הבאות:

    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: המשתמש שרוצים להעניק לו את ההרשאות.

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