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 depuis une instance une instance Cloud Data Fusion, vous utilisez une VM Compute Engine proxy. Un proxy est requise, 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 avec (consultez la page Présentation de l'appairage de réseaux VPC).

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

  1. Si vous ne l'avez pas encore fait, créez une instance Cloud Data Fusion privée Compute Engine. Par exemple :

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

  3. Une fois l'instance créée, accédez à la page Instances Cloud SQL. et développez la section Détails de l'instance. Dans la fenêtre Connect to this 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 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 peut accéder à Container Registry pour obtenir l'image du proxy. Vous pouvez utiliser des requêtes d'adresses IP, 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 dans laquelle se trouve la VM Compute Engine
    • CUSTOMER_VPC_NETWORK_NAME : nom de votre réseau
    • CUSTOMER_VPC_SUBNET_NAME: du réseau nom
    • COMPUTE_ENGINE_VM_NAME: nom du VM Compute Engine
    • SQL_INSTANCE_CONNECTION_NAME: la connexion de l'étape précédente
    • CLOUD_DATA_FUSION_IP_RANGE : plage d'adresses IP
    • DB_PORT: numéro de port du Base de données Cloud SQL
  2. Créez une règle de pare-feu pour autoriser le trafic entrant Cloud Data Fusion avec 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. Convertissez 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 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 comme hôte ou saisissez-la la chaîne de connexion JDBC pour accéder à la base de données MySQL depuis 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 informations de connexion de votre base de données MySQL dans Cloud Data Fusion. Vous pouvez saisir les informations et tester la connexion sur la page Wrangler.

Facultatif : Autres façons 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 la connexion.
  • Sur la page Studio, utilisez plutôt le plug-in source de base de données, qui contient des propriétés similaires (Chaîne de connexion, Nom d'utilisateur, Mot de passe et Arguments de connexion).

Autres connexions

Bien qu'il soit recommandé de connecter des instances privées, les connexions suivantes sont possibles:

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