חיבור למקור Cloud SQL-MySQL

בדף הזה נסביר איך לחבר מופע פרטי של Cloud Data Fusion למופע פרטי של Cloud SQL שמארח מסד נתונים של MySQL. הגדרה דומה מתאימה למופעי Postgres ו-SQL Server. אפשר ליצור קשרים עם אנשים מחוץ לארגון.

מומלץ: מטעמי אבטחה, כדאי להשתמש במכונות פרטיות של Cloud SQL ו-Cloud Data Fusion.

יצירת מכונות פרטיות ב-Cloud Data Fusion וב-Cloud SQL

כדי להתחבר למכונת Cloud SQL פרטית ממכונת Cloud Data Fusion פרטית, משתמשים במכונה וירטואלית של Compute Engine בתור שרת proxy. נדרש פרוקסי כי רשת Cloud SQL לא מקושרת ישירות לרשת Cloud Data Fusion, ורשתות שכנות לא יכולות לתקשר זו עם זו (ראו סקירה כללית על קישור בין רשתות VPC שכנות).

כדי ליצור את המופעים הפרטיים, פועלים לפי השלבים הבאים:

  1. אם עדיין אין לכם מכונה, צרו מכונת Cloud Data Fusion פרטית. למשל:

    1. הגדרת רשת VPC
    2. הקצאת טווח כתובות IP
  2. יוצרים מכונת Cloud SQL פרטית באותה רשת VPC שבה נמצאת מכונת Cloud Data Fusion.

  3. אחרי שיוצרים את המכונה, עוברים לדף Instances ב-Cloud SQL ומרחיבים את Instance details. בקטע Connect to this instance, מעתיקים את כתובת ה-IP ואת שם החיבור.

    כניסה לדף Cloud SQL Instances

יצירת מכונה וירטואלית פרטית ב-Compute Engine

כדי ליצור את המכונה הווירטואלית, אפשר להזין את הפקודות הבאות ב-Cloud Shell או בסביבה אחרת שבה מותקן Google Cloud SDK.

הפקודות יוצרות מכונה וירטואלית עם כתובות IP פנימיות וציבוריות (הפרמטר --no-address לא מצוין בפקודה לדוגמה ליצירת מכונה וירטואלית), כדי שהמכונה הווירטואלית תוכל לגשת ל-Container Registry כדי לקבל את תמונת ה-proxy. אפשר להשתמש בכתובות IP פנימיות, אבל צריך גם להפעיל גישה פרטית ל-Google עבור תת-הרשת שבה נמצאת המכונה הווירטואלית.

  1. מייצאים את משתני הסביבה הבאים:

    export PROJECT=CUSTOMER_PROJECT
    export REGION=VM_REGION
    export ZONE=`gcloud compute zones list --filter="name=${REGION}" --limit 1 --uri --project=${PROJECT}| sed 's/.*\///'`
    export NETWORK=CUSTOMER_VPC_NETWORK_NAME
    export SUBNET=CUSTOMER_VPC_SUBNET_NAME
    export INSTANCE_NAME=COMPUTE_ENGINE_VM_NAME
    export SQL_CONN=SQL_INSTANCE_CONNECTION_NAME
    export CDF_IP_RANGE=CLOUD_DATA_FUSION_IP_RANGE
    export VM_IMAGE=$(gcloud compute images list --project=$PROJECT --filter=family:cos-stable --format='value(selfLink.scope())' --limit=1)
    export SQL_PORT=DB_PORT # MySQL 3306 # PostgreSQL 5432 # SQLServer 1433
    

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

    • CUSTOMER_PROJECT: שם הפרויקט
    • VM_REGION: האזור שבו נמצאת המכונה הווירטואלית של Compute Engine
    • CUSTOMER_VPC_NETWORK_NAME: השם של הרשת
    • CUSTOMER_VPC_SUBNET_NAME: השם של רשת המשנה
    • COMPUTE_ENGINE_VM_NAME: השם של המכונה הווירטואלית ב-Compute Engine
    • SQL_INSTANCE_CONNECTION_NAME: שם החיבור מהשלב הקודם
    • CLOUD_DATA_FUSION_IP_RANGE: טווח כתובות ה-IP
    • DB_PORT: מספר היציאה של מסד הנתונים ב-Cloud SQL
  2. יוצרים כלל חומת אש שמאפשר תעבורת נתונים נכנסת של Cloud Data Fusion באמצעות הפקודה הבאה של ה-CLI של gcloud:

    gcloud compute firewall-rules create allow-private-cdf \
    --allow=tcp:22,tcp:${SQL_PORT} \
    --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
    
  3. יוצרים את ה-VM באמצעות הפקודה הבאה ב-CLI של gcloud:

    gcloud compute --project=${PROJECT} instances create ${INSTANCE_NAME} \
    --zone=${ZONE} \
    --machine-type=g1-small \
    --subnet=${SUBNET} \
    --metadata=startup-script="docker run -d -p 0.0.0.0:${SQL_PORT}:${SQL_PORT} gcr.io/cloudsql-docker/gce-proxy:latest /cloud_sql_proxy -instances=${SQL_CONN}=tcp:0.0.0.0:${SQL_PORT}" \
    --maintenance-policy=MIGRATE \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --image=${VM_IMAGE} \
    --image-project=cos-cloud
    
  4. מריצים את הפקודה הבאה ב-CLI של gcloud כדי לקבל את כתובת ה-IP הפנימית של מכונת ה-VM:

    export IP=`gcloud compute \
    --project=${PROJECT} instances describe ${INSTANCE_NAME} \
    --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
    
  5. מקדמים את כתובת ה-IP הפנימית של המכונה הווירטואלית לכתובת IP סטטית באמצעות הפקודה הבאה ב-CLI של gcloud:

    gcloud compute --project=${PROJECT} addresses create mysql-proxy \
    --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
    
  6. מקבלים את כתובת ה-IP שתשמש במחרוזת החיבור של Cloud Data Fusion MySQL JDBC כשמגדירים את החיבור:

    echo ${IP}
    

אחרי שהמכונה הווירטואלית נוצרת עם כתובת IP סטטית, משתמשים בכתובת ה-IP כמארח או מזינים אותה במחרוזת החיבור של JDBC כדי לגשת למסד הנתונים של MySQL מ-Cloud Data Fusion.

גישה ל-MySQL מתוך Cloud Data Fusion

כדי להתחבר למכונת MySQL מתוך מכונת Cloud Data Fusion, צריך להתקין את מנהל ההתקן MySQL JDBC מ-Cloud Data Fusion Hub (או ישירות מההורדות של קהילת MySQL).

מזינים את פרטי החיבור למסד הנתונים של MySQL ב-Cloud Data Fusion. אפשר להזין את הפרטים ולבדוק את החיבור בדף Wrangler.

אופציונלי: דרכים אחרות להתחבר ל-MySQL

אפשר לגשת ל-MySQL ב-Cloud Data Fusion בדרכים הבאות:

  • בדף Studio, לוחצים על התוסף של מקור MySQL ומזינים את פרטי החיבור.
  • בדף Studio, במקום זאת, משתמשים בתוסף Database source (מקור מסד נתונים), שיש לו מאפיינים דומים (Connection string (מחרוזת חיבור), Username (שם משתמש), Password (סיסמה) ו-Connection Arguments (ארגומנטים של חיבור)).

חיבורים אחרים

מומלץ לקשר בין מופעים פרטיים, אבל אפשר גם לקשר בין:

  • ממכונת Cloud Data Fusion ציבורית למכונת Cloud SQL ציבורית (באמצעות שרת proxy ציבורי של Cloud SQL או הוספה לרשימת ההיתרים של טווח 0.0.0.0/0 ברשת מורשית). אפשר לעיין באפשרות הקישור דרך IP ציבורי ב-Cloud SQL.
  • מכונה פרטית של Cloud Data Fusion ומכונה ציבורית של Cloud SQL (באמצעות שרת proxy ציבורי של Cloud SQL ברשת מורשית).
  • מכונת Cloud Data Fusion ציבורית ומכונת Cloud SQL פרטית.