Conéctate a una fuente de Cloud SQL y MySQL

En esta página, se describe cómo conectar una instancia privada de Cloud Data Fusion a una instancia privada de Cloud SQL que aloja una base de datos de MySQL. Una configuración similar funciona para las instancias de Postgres y SQL Server. Las conexiones públicas son posibles.

Recomendado: Por motivos de seguridad, usa instancias privadas de Cloud SQL y Cloud Data Fusion.

Crea instancias privadas en Cloud Data Fusion y Cloud SQL

Para conectarte a una instancia privada de Cloud SQL desde una instancia privada de Cloud Data Fusion, usa una VM de proxy de Compute Engine. Se requiere un proxy, ya que la red de Cloud SQL no intercambia tráfico directamente con la red de Cloud Data Fusion, y los pares transitivos no pueden comunicarse entre sí (consulta la descripción general del intercambio de tráfico entre redes de VPC).

Para crear las instancias privadas, sigue estos pasos:

  1. Si todavía no tienes una, crea una instancia privada de Cloud Data Fusion. Esto incluye lo siguiente:

    1. Configura una red de VPC
    2. Asigna un rango de IP
  2. Crea una instancia privada de Cloud SQL en la misma red de VPC que tu instancia de Cloud Data Fusion.

  3. Después de crear la instancia, ve a la página Instancias de Cloud SQL y expande la sección Detalles de la instancia. En la sección Conectarse a esta instancia, copia la IP y el nombre de la conexión.

    Ir a Instancias de Cloud SQL

Crea una VM privada de Compute Engine

Para crear la VM, puedes ingresar los siguientes comandos en Cloud Shell o en otro entorno en el que esté instalado el SDK de Google Cloud.

Los comandos crean una VM con direcciones IP internas y públicas (--no-address no se especifica en el comando de creación de VM de muestra) para que la VM pueda acceder a Container Registry para obtener la imagen de proxy. Puedes usar IP internas, pero también debes habilitar el Acceso privado a Google para la subred en la que se encuentra la VM.

  1. Exporta las siguientes variables de entorno:

    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
    

    Reemplaza lo siguiente:

    • CUSTOMER_PROJECT: Es el nombre de tu proyecto.
    • VM_REGION: Es la región en la que se encuentra la VM de Compute Engine.
    • CUSTOMER_VPC_NETWORK_NAME: Es el nombre de la red.
    • CUSTOMER_VPC_SUBNET_NAME: El nombre de tu subred
    • COMPUTE_ENGINE_VM_NAME: Es el nombre de la VM de Compute Engine.
    • SQL_INSTANCE_CONNECTION_NAME: Es el nombre de la conexión del paso anterior.
    • CLOUD_DATA_FUSION_IP_RANGE: El rango de direcciones IP
    • DB_PORT: Es el número de puerto de la base de datos de Cloud SQL.
  2. Crea una regla de firewall para permitir el tráfico de entrada de Cloud Data Fusion con el siguiente comandogcloud CLId:

    gcloud compute firewall-rules create allow-private-cdf \
    --allow=tcp:22,tcp:${SQL_PORT} \
    --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
    
  3. Crea la VM con el siguiente comando de gcloud CLI:

    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. Obtén la IP interna de la VM con el siguiente comando de gcloud CLI:

    export IP=`gcloud compute \
    --project=${PROJECT} instances describe ${INSTANCE_NAME} \
    --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
    
  5. Promueve la IP interna de la VM a una IP estática con el siguiente comando de gcloud CLI:

    gcloud compute --project=${PROJECT} addresses create mysql-proxy \
    --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
    
  6. Obtén la IP que se usará en la string de conexión de JDBC de MySQL de Cloud Data Fusion cuando configures la conexión:

    echo ${IP}
    

Después de crear la VM con una IP estática, usa la IP como host o ingrésala en la string de conexión de JDBC para acceder a la base de datos MySQL desde Cloud Data Fusion.

Accede a MySQL desde Cloud Data Fusion

Antes de poder conectarte a la instancia de MySQL desde la instancia de Cloud Data Fusion, instala el controlador de JDBC de MySQL desde Cloud Data Fusion Hub (o directamente desde las descargas de la comunidad de MySQL).

Ingresa los detalles de conexión de tu base de datos MySQL en Cloud Data Fusion. Puedes ingresar los detalles y probar la conexión en la página de Wrangler.

Opcional: Otras formas de conectarse a MySQL

En Cloud Data Fusion, puedes acceder a MySQL de las siguientes maneras:

  • En la página Studio, haz clic en el complemento de origen de MySQL y, luego, ingresa los detalles de conexión.
  • En su lugar, en la página Studio, usa el complemento de fuente de base de datos, que tiene propiedades similares (Cadena de conexión, Nombre de usuario, Contraseña y Argumentos de conexión).

Otras conexiones

Aunque se recomienda conectar instancias privadas, se pueden realizar las siguientes conexiones:

  • De una instancia pública de Cloud Data Fusion a una instancia pública de Cloud SQL (mediante un proxy público de Cloud SQL o incluyendo en la lista de entidades permitidas el rango 0.0.0.0/0 en una red autorizada) Consulta la opción de conexión IP pública para Cloud SQL.
  • Una instancia privada de Cloud Data Fusion y una instancia pública de Cloud SQL (mediante un proxy público de Cloud SQL en una red autorizada)
  • Una instancia pública de Cloud Data Fusion y una instancia privada de Cloud SQL.