Verbindung zu einer Cloud SQL-MySQL-Quelle herstellen

Auf dieser Seite wird beschrieben, wie Sie eine private Cloud Data Fusion-Instanz mit einer private Cloud SQL-Instanz, 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

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

So erstellen Sie die privaten Instanzen:

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

    1. VPC-Netzwerk einrichten
    2. IP-Bereich zuweisen
  2. Private Cloud SQL-Instanz erstellen im selben VPC-Netzwerk wie Ihre Cloud Data Fusion-Instanz.

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

    Cloud SQL-Instanzen aufrufen

Private Compute Engine-VM erstellen

Sie können die folgenden Befehle eingeben, um die VM zu erstellen: Cloud Shell oder eine andere Umgebung, in der der Das Google Cloud SDK ist installiert.

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

  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: Die des Subnetzwerks Name
    • COMPUTE_ENGINE_VM_NAME: Der Name der Compute Engine-VM
    • SQL_INSTANCE_CONNECTION_NAME: Die Verbindung Name aus dem vorherigen Schritt
    • CLOUD_DATA_FUSION_IP_RANGE: die IP-Adresse Bereich
    • DB_PORT: die Portnummer des Cloud SQL-Datenbank
  2. Erstellen Sie eine Firewallregel, um eingehenden Cloud Data Fusion-Traffic mit den folgenden gcloud CLI-Befehl:

    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 zu einer statischen IP-Adresse hoch mit: gcloud CLI-Befehlszeile:

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

    echo ${IP}
    

Nachdem die VM mit einer statischen IP-Adresse erstellt wurde, verwenden Sie die IP-Adresse als Host oder geben Sie sie in JDBC-Verbindungsstring für den Zugriff auf die MySQL-Datenbank von Cloud Data Fusion.

In Cloud Data Fusion auf MySQL zugreifen

Bevor Sie von Cloud Data Fusion aus eine Verbindung zur MySQL-Instanz herstellen können den MySQL-JDBC-Treiber vom Cloud Data Fusion Hub (oder direkt von MySQL-Community-Downloads)

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

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

In Cloud Data Fusion haben Sie folgende Möglichkeiten, auf MySQL zuzugreifen:

  • Klicken Sie auf der Seite Studio auf das MySQL-Quell-Plug-in und geben Sie die Verbindungsdetails ein.
  • Verwenden Sie stattdessen auf der Seite Studio das Plug-in „Database Source“, mit dem Sie ähnlichen Eigenschaften (Verbindungsstring, Nutzername, Passwort und Verbindungsargumente).

Andere Verbindungen

Es wird empfohlen, private Instanzen zu verbinden. Die folgenden Verbindungen sind jedoch möglich:

  • Zwischen einer öffentlichen Cloud Data Fusion-Instanz und einer öffentlichen Cloud SQL-Instanz (mit einem öffentlichen Cloud SQL-Proxy oder durch Aufnahme des Bereichs 0.0.0.0/0 in die Zulassungsliste eines autorisierten Netzwerks) Weitere Informationen finden Sie in der Verbindungsoption über öffentliche IP-Adresse für Cloud SQL.
  • Eine private Cloud Data Fusion-Instanz und eine öffentliche Cloud SQL-Instanz (mit einem öffentlichen Cloud SQL-Proxy in einem autorisierten Netzwerk)
  • Eine öffentliche Cloud Data Fusion-Instanz und eine private Cloud SQL-Instanz.