Auf dieser Seite wird beschrieben, wie Sie eine private Cloud Data Fusion-Instanz mit einer privaten Cloud SQL-Instanz verbinden, auf der eine MySQL-Datenbank gehostet wird. Eine ähnliche Einrichtung funktioniert für Postgres- und SQL Server-Instanzen. Öffentliche Verbindungen sind möglich.
Empfohlen: Verwenden Sie aus Sicherheitsgründen private Cloud SQL- und Cloud Data Fusion-Instanzen.
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:
Falls noch nicht geschehen, erstellen Sie eine private Cloud Data Fusion-Instanz. Dazu zählen:
- VPC-Netzwerk einrichten
- IP-Bereich zuweisen
Erstellen Sie eine private Cloud SQL-Instanz in demselben VPC-Netzwerk wie Ihre Cloud Data Fusion-Instanz.
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.
Private Compute Engine-VM erstellen
Sie können die VM mit den folgenden Befehlen in Cloud Shell oder einer anderen Umgebung erstellen, 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 Beispielbefehl zum Erstellen einer VM nicht angegeben), damit die VM auf die Container Registry zugreifen und das Proxy-Image abrufen kann. 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.
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 ProjektsVM_REGION
: Die Region, in der sich die Compute Engine-VM befindetCUSTOMER_VPC_NETWORK_NAME
: Name Ihres NetzwerksCUSTOMER_VPC_SUBNET_NAME
: Name Ihres SubnetzwerksCOMPUTE_ENGINE_VM_NAME
: Der Name der Compute Engine-VMSQL_INSTANCE_CONNECTION_NAME
: Der Name der Verbindung aus dem vorherigen SchrittCLOUD_DATA_FUSION_IP_RANGE
: IP-AdressbereichDB_PORT
: Die Portnummer der Cloud SQL-Datenbank
Erstellen Sie mit dem folgenden gcloud CLI-Befehl eine Firewallregel, um Cloud Data Fusion-Eingangstraffic zuzulassen:
gcloud compute firewall-rules create allow-private-cdf \ --allow=tcp:22,tcp:${SQL_PORT} \ --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
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
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}'`
Wandeln Sie die interne IP-Adresse der VM mit dem folgenden gcloud-Befehl in eine statische IP-Adresse um:
gcloud compute --project=${PROJECT} addresses create mysql-proxy \ --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
Rufen Sie die IP-Adresse ab, die beim Einrichten der Verbindung 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 die IP-Adresse als Host oder geben Sie sie in den JDBC-Verbindungsstring ein, um von Cloud Data Fusion aus auf die MySQL-Datenbank zuzugreifen.
In Cloud Data Fusion auf MySQL zugreifen
Bevor Sie eine Verbindung von der Cloud Data Fusion-Instanz zur MySQL-Instanz herstellen können, müssen Sie den MySQL-JDBC-Treiber aus dem Cloud Data Fusion Hub oder direkt über die MySQL-Community-Downloads installieren.
Geben Sie die Verbindungsdetails für Ihre MySQL-Datenbank in Cloud Data Fusion ein. Du kannst die Details auf der Seite Wrangler eingeben und die Verbindung testen.
Optional: Weitere Möglichkeiten, eine Verbindung zu MySQL herzustellen
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 auf der Seite Studio stattdessen das Plug-in „Datenbankquelle“, das ähnliche Eigenschaften hat (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 unter Öffentliche IP-Verbindungsoption 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.