Se connecter à une source Cloud SQL-MySQL

Cette page explique comment connecter une instance Cloud Data Fusion privée à une instance Cloud SQL privée qui héberge une base de données MySQL. Une configuration similaire fonctionne pour les instances Postgres et SQL Server. Les connexions publiques sont possibles.

Recommandé: Pour des raisons de sécurité, utilisez des instances privées de Cloud SQL et de Cloud Data Fusion.

Créer des instances privées dans Cloud Data Fusion et Cloud SQL

Pour vous connecter à une instance Cloud SQL privée à partir d'une instance Cloud Data Fusion privée, vous devez utiliser une VM Compute Engine proxy. Un proxy est nécessaire, car le réseau Cloud SQL n'est pas directement appairé avec le réseau Cloud Data Fusion, et les pairs transitifs ne peuvent pas communiquer entre eux (consultez la présentation de l'appairage de réseaux VPC).

Pour créer les instances privées, procédez comme suit:

  1. Si vous n'en avez pas encore, créez une instance Cloud Data Fusion privée. Notre offre comprend :

    1. Configurer un réseau VPC
    2. Attribuer une plage d'adresses IP
  2. Créez une instance Cloud SQL privée dans le même réseau VPC que votre instance Cloud Data Fusion.

  3. Une fois l'instance créée, accédez à la page Instances de Cloud SQL et développez la section Détails de l'instance. Dans la section Se connecter à cette instance, copiez l'adresse IP et le nom de connexion.

    Accéder à la page Instances Cloud SQL

Créer une VM Compute Engine privée

Pour créer la VM, vous pouvez saisir les commandes suivantes dans Cloud Shell ou dans un autre environnement dans lequel le SDK Google Cloud est installé.

Les commandes créent une VM avec des adresses IP internes et publiques (--no-address n'est pas spécifié dans l'exemple de commande de création de VM) afin que la VM puisse accéder à Container Registry pour obtenir l'image du proxy. Vous pouvez utiliser des adresses IP internes, mais vous devez également activer l'accès privé à Google pour le sous-réseau où se trouve la VM.

  1. Exportez les variables d'environnement suivantes:

    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
    

    Remplacez les éléments suivants :

    • CUSTOMER_PROJECT: nom de votre projet
    • VM_REGION: région où se trouve la VM Compute Engine.
    • CUSTOMER_VPC_NETWORK_NAME: nom de votre réseau.
    • CUSTOMER_VPC_SUBNET_NAME: nom de votre sous-réseau.
    • COMPUTE_ENGINE_VM_NAME: nom de la VM Compute Engine.
    • SQL_INSTANCE_CONNECTION_NAME: nom de la connexion de l'étape précédente
    • CLOUD_DATA_FUSION_IP_RANGE: plage d'adresses IP
    • DB_PORT: numéro de port de la base de données Cloud SQL
  2. Créez une règle de pare-feu pour autoriser le trafic entrant de Cloud Data Fusion à l'aide de la commande gcloud CLI suivante:

    gcloud compute firewall-rules create allow-private-cdf \
    --allow=tcp:22,tcp:${SQL_PORT} \
    --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
    
  3. Créez la VM à l'aide de la commande gcloud CLI suivante:

    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. Obtenez l'adresse IP interne de la VM à l'aide de la commande gcloud CLI suivante:

    export IP=`gcloud compute \
    --project=${PROJECT} instances describe ${INSTANCE_NAME} \
    --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
    
  5. Transformez l'adresse IP interne de la VM en adresse IP statique à l'aide de la commande gcloud CLI suivante:

    gcloud compute --project=${PROJECT} addresses create mysql-proxy \
    --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
    
  6. Obtenez l'adresse IP à utiliser dans la chaîne de connexion JDBC MySQL de Cloud Data Fusion lorsque vous configurez la connexion:

    echo ${IP}
    

Une fois la VM créée avec une adresse IP statique, utilisez l'adresse IP en tant qu'hôte ou saisissez-la dans la chaîne de connexion JDBC pour accéder à la base de données MySQL à partir de Cloud Data Fusion.

Accéder à MySQL depuis Cloud Data Fusion

Avant de pouvoir vous connecter à l'instance MySQL à partir de l'instance Cloud Data Fusion, installez le pilote JDBC MySQL à partir du hub Cloud Data Fusion (ou directement à partir des téléchargements de la communauté MySQL).

Saisissez les détails de connexion de votre base de données MySQL dans Cloud Data Fusion. Vous pouvez saisir les détails et tester la connexion sur la page Wrangler.

Facultatif: Autres moyens de se connecter à MySQL

Vous pouvez accéder à MySQL de différentes manières dans Cloud Data Fusion:

  • Sur la page Studio, cliquez sur le plug-in source MySQL, puis saisissez les détails de connexion.
  • Sur la page Studio, utilisez plutôt le plug-in source de base de données, qui possède des propriétés similaires (Chaîne de connexion, Nom d'utilisateur, Mot de passe et Arguments de connexion).

Autres connexions

Bien que la connexion d'instances privées soit recommandée, les connexions suivantes sont possibles:

  • Une instance Cloud Data Fusion publique vers une instance Cloud SQL publique (en utilisant un proxy Cloud SQL public ou en ajoutant la plage 0.0.0.0/0 à la liste d'autorisation d'un réseau autorisé) Consultez la section concernant l'option de connexion IP publique pour Cloud SQL.
  • Une instance Cloud Data Fusion privée et une instance Cloud SQL publique (en utilisant un proxy Cloud SQL public dans un réseau autorisé)
  • Une instance Cloud Data Fusion publique et une instance Cloud SQL privée