Verbindung zu einer Cloud SQL-MySQL-Quelle herstellen

Auf dieser Seite wird beschrieben, wie Sie eine private Cloud Data Fusion-Instanz mit einer privaten Cloud SQL-Instanz verbinden, die eine MySQL-Datenbank hostet. Eine ähnliche Einrichtung funktioniert für Postgres- und SQL Server-Instanzen. Öffentliche Verbindungen sind möglich.

Empfohlen: Verwenden Sie aus Sicherheitsgründen private Instanzen von Cloud SQL und Cloud Data Fusion.

Private Instanzen in Cloud Data Fusion und Cloud SQL erstellen

Um von einer privaten Cloud Data Fusion-Instanz eine Verbindung zu einer privaten Cloud SQL-Instanz herzustellen, verwenden Sie eine Proxy-Compute Engine-VM. Ein Proxy ist erforderlich, da das Cloud SQL-Netzwerk nicht direkt über Peering mit dem Cloud Data Fusion-Netzwerk verbunden ist und Transitive Peers nicht miteinander kommunizieren können (siehe Übersicht über VPC-Netzwerk-Peering).

So erstellen Sie die privaten Instanzen:

  1. Erstellen Sie eine private Cloud Data Fusion-Instanz, falls noch nicht geschehen. Dazu zählen:

    1. VPC-Netzwerk einrichten
    2. IP-Bereich zuweisen
  2. Erstellen Sie eine private Cloud SQL-Instanz im selben VPC-Netzwerk wie Ihre Cloud Data Fusion-Instanz.

  3. Rufen Sie nach dem Erstellen der Instanz die Cloud SQL-Seite Instanzen auf und maximieren Sie die Instanzdetails. Kopieren Sie im Bereich Mit dieser Instanz verbinden die IP-Adresse und den Verbindungsnamen.

    Zu den Cloud SQL-Instanzen

Private Compute Engine-VM erstellen

Zum Erstellen der VM können Sie die folgenden Befehle in Cloud Shell oder in einer anderen Umgebung eingeben, in der das Google Cloud SDK installiert ist.

Mit den Befehlen wird eine VM mit internen und öffentlichen IP-Adressen erstellt (--no-address ist im Befehl zum Erstellen einer Beispiel-VM nicht angegeben), damit die VM auf Container Registry zugreifen kann, um das Proxy-Image abzurufen. Sie können interne IP-Adressen verwenden, müssen aber auch für das Subnetz, in dem sich die VM befindet, den privaten Google-Zugriff aktivieren.

  1. Exportieren Sie die folgenden Umgebungsvariablen:

    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
    

    Ersetzen Sie Folgendes:

    • CUSTOMER_PROJECT: Name Ihres Projekts
    • VM_REGION: Die Region, in der sich die Compute Engine-VM befindet.
    • CUSTOMER_VPC_NETWORK_NAME: Name Ihres Netzwerks
    • CUSTOMER_VPC_SUBNET_NAME: Name Ihres Subnetzwerks
    • COMPUTE_ENGINE_VM_NAME: Der Name der Compute Engine-VM.
    • SQL_INSTANCE_CONNECTION_NAME: Der Verbindungsname aus dem vorherigen Schritt.
    • CLOUD_DATA_FUSION_IP_RANGE: Der IP-Adressbereich.
    • DB_PORT: die Portnummer der Cloud SQL-Datenbank
  2. Erstellen Sie mit dem folgenden gcloud CLI-Befehl eine Firewallregel, um eingehenden Cloud Data Fusion-Traffic zuzulassen:

    gcloud compute firewall-rules create allow-private-cdf \
    --allow=tcp:22,tcp:${SQL_PORT} \
    --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
    
  3. Erstellen Sie die VM mit dem folgenden gcloud CLI-Befehl:

    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. Rufen Sie die interne IP-Adresse der VM mit dem folgenden gcloud CLI-Befehl ab:

    export IP=`gcloud compute \
    --project=${PROJECT} instances describe ${INSTANCE_NAME} \
    --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
    
  5. Stufen Sie die interne IP-Adresse der VM mit dem folgenden gcloud CLI-Befehl in eine statische IP-Adresse hoch:

    gcloud compute --project=${PROJECT} addresses create mysql-proxy \
    --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
    
  6. Rufen Sie beim Einrichten der Verbindung die IP-Adresse ab, die im MySQL-JDBC-Verbindungsstring von Cloud Data Fusion verwendet werden soll:

    echo ${IP}
    

Nachdem die VM mit einer statischen IP-Adresse erstellt wurde, verwenden Sie diese als Host oder geben Sie sie in den JDBC-Verbindungsstring ein, um über Cloud Data Fusion auf die MySQL-Datenbank zuzugreifen.

In Cloud Data Fusion auf MySQL zugreifen

Bevor Sie von der Cloud Data Fusion-Instanz aus eine Verbindung zur MySQL-Instanz herstellen können, müssen Sie den MySQL-JDBC-Treiber aus dem Cloud Data Fusion Hub (oder direkt aus den MySQL-Community-Downloads) installieren.

Geben Sie die Verbindungsdetails für Ihre MySQL-Datenbank in Cloud Data Fusion ein. Sie können die Details eingeben und die Verbindung auf der Seite Wrangler testen.

Optional: Weitere Möglichkeiten zum Herstellen einer Verbindung zu MySQL

In Cloud Data Fusion können Sie auf folgende Arten auf MySQL zugreifen:

  • Klicken Sie auf der Seite Studio auf das MySQL-Quell-Plug-in und geben Sie die Verbindungsdetails ein.
  • Verwenden Sie auf der Seite Studio stattdessen das Datenbankquell-Plug-in, das ähnliche Eigenschaften hat (Verbindungsstring, Nutzername, Passwort und Verbindungsargumente).

Andere Verbindungen

Obwohl die Verbindung privater Instanzen empfohlen wird, sind die folgenden Verbindungen möglich:

  • Eine öffentliche Cloud Data Fusion-Instanz zu einer öffentlichen Cloud SQL-Instanz (mithilfe eines öffentlichen Cloud SQL-Proxys oder indem der Bereich 0.0.0.0/0 in einem autorisierten Netzwerk auf die Zulassungsliste gesetzt wird). Weitere Informationen finden Sie unter Verbindungsoption für öffentliche IP-Adressen für Cloud SQL.
  • Eine private Cloud Data Fusion-Instanz und eine öffentliche Cloud SQL-Instanz (unter Verwendung eines öffentlichen Cloud SQL-Proxys in einem autorisierten Netzwerk).
  • Eine öffentliche Cloud Data Fusion-Instanz und eine private Cloud SQL-Instanz.