Conectar-se a uma fonte do Cloud SQL-MySQL

Esta página descreve como conectar uma instância particular do Cloud Data Fusion a uma instância particular do Cloud SQL que hospeda um banco de dados MySQL. Uma configuração semelhante funciona para instâncias do Postgres e do SQL Server. As conexões públicas são possíveis.

Recomendado: por motivos de segurança, use instâncias particulares do Cloud SQL e do Cloud Data Fusion.

Criar instâncias particulares no Cloud Data Fusion e no Cloud SQL

Para se conectar a uma instância particular do Cloud SQL a partir de uma instância particular do Cloud Data Fusion, use uma VM do Compute Engine como proxy. Um proxy é necessário porque a rede do Cloud SQL não é diretamente pareada com a rede do Cloud Data Fusion, e os pares transitivos não podem se comunicar entre si. Consulte a Visão geral do peering de rede VPC.

Para criar as instâncias particulares, siga estas etapas:

  1. Se você ainda não tiver uma, crie uma instância particular do Cloud Data Fusion. Isso inclui:

    1. Configurar uma rede VPC
    2. Como alocar um intervalo de IPs
  2. Crie uma instância particular do Cloud SQL na mesma rede VPC da sua instância do Cloud Data Fusion.

  3. Depois que a instância for criada, acesse a página Instâncias do Cloud SQL e abra Detalhes da instância. Na seção Conectar-se a esta instância, copie o IP e o nome da conexão.

    Acesse "Instâncias do Cloud SQL"

Criar uma VM privada do Compute Engine

Para criar a VM, digite os comandos a seguir no Cloud Shell ou em outro ambiente em que o SDK do Google Cloud esteja instalado.

Os comandos criam uma VM com endereços IP internos e públicos (--no-address não é especificado no comando de criação de VM de exemplo) para que a VM possa acessar o Registro de contêineres e receber a imagem do proxy. É possível usar IPs internos, mas também é necessário ativar o Acesso privado do Google para a sub-rede em que a VM está localizada.

  1. Exporte as seguintes variáveis de ambiente:

    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
    

    Substitua:

    • CUSTOMER_PROJECT: o nome do projeto
    • VM_REGION: a região em que a VM do Compute Engine está localizada
    • CUSTOMER_VPC_NETWORK_NAME: o nome da sua rede
    • CUSTOMER_VPC_SUBNET_NAME: o nome da sub-rede
    • COMPUTE_ENGINE_VM_NAME: o nome da VM do Compute Engine
    • SQL_INSTANCE_CONNECTION_NAME: o nome da conexão da etapa anterior
    • CLOUD_DATA_FUSION_IP_RANGE: o intervalo de endereços IP
    • DB_PORT: o número da porta do banco de dados do Cloud SQL
  2. Crie uma regra de firewall para permitir o tráfego de entrada do Cloud Data Fusion com o seguinte comando da CLI do gcloud:

    gcloud compute firewall-rules create allow-private-cdf \
    --allow=tcp:22,tcp:${SQL_PORT} \
    --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
    
  3. Crie a VM com o seguinte comando da CLI gcloud:

    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. Receba o IP interno da VM com o seguinte comando da CLI gcloud:

    export IP=`gcloud compute \
    --project=${PROJECT} instances describe ${INSTANCE_NAME} \
    --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
    
  5. Promova o IP interno da VM para um IP estático com o seguinte comando da CLI do gcloud:

    gcloud compute --project=${PROJECT} addresses create mysql-proxy \
    --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
    
  6. Receba o IP a ser usado na string de conexão JDBC do MySQL do Cloud Data Fusion ao configurar a conexão:

    echo ${IP}
    

Depois que a VM for criada com um IP estático, use o IP como host ou insira-o na string de conexão JDBC para acessar o banco de dados MySQL do Cloud Data Fusion.

Acessar o MySQL no Cloud Data Fusion

Antes de se conectar à instância do MySQL pela instância do Cloud Data Fusion, instale o driver JDBC do MySQL no Hub do Cloud Data Fusion ou diretamente nos downloads da comunidade do MySQL.

Insira os detalhes de conexão do seu banco de dados MySQL no Cloud Data Fusion. Você pode inserir os detalhes e testar a conexão na página Wrangler.

Opcional: outras maneiras de se conectar ao MySQL

É possível acessar o MySQL da seguinte maneira no Cloud Data Fusion:

  • Na página Studio, clique no plug-in de origem do MySQL e insira os detalhes da conexão.
  • Na página Studio, use o plug-in de origem do banco de dados, que tem propriedades semelhantes (Connection string, Username, Password e Connection Arguments).

Outras conexões

Embora a conexão de instâncias particulares seja recomendada, as seguintes conexões são possíveis:

  • Uma instância pública do Cloud Data Fusion para uma instância pública do Cloud SQL (usando um proxy público do Cloud SQL ou adicionando o intervalo 0.0.0.0/0 à lista de permissões em uma rede autorizada). Consulte a opção de conexão de IP público para o Cloud SQL.
  • Uma instância particular do Cloud Data Fusion e uma instância pública do Cloud SQL (usando um proxy público do Cloud SQL em uma rede autorizada).
  • Uma instância pública do Cloud Data Fusion e uma instância particular do Cloud SQL.