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. Des connexions publiques sont possibles.

Recommandation: Pour des raisons de sécurité, utilisez aux 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éez 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 qu'elle puisse accéder au 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 dans laquelle La VM Compute Engine se trouve
    • 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 du Base de données Cloud SQL
  2. Créez une règle de pare-feu pour autoriser le trafic entrant 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. Convertissez l'adresse IP interne de la VM en adresse IP statique à l'aide du code suivant : Commande gcloud CLI:

    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 depuis Cloud Data Fusion , installez le pilote JDBC MySQL à partir de Cloud Data Fusion Hub (ou directement depuis 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 de source MySQL, puis saisissez les informations de 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 que la connexion d'instances privées soit recommandée, les connexions suivantes sont possibles :

  • Une instance Cloud Data Fusion publique à une instance Cloud SQL publique (à l'aide d'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 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.