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 uma instância do Cloud Data Fusion, você usa uma VM de proxy do Compute Engine. Um proxy porque a rede do Cloud SQL não tem peering direto na rede do Cloud Data Fusion, e os pares transitivos não conseguem se comunicar entre si. Consulte a Visão geral do peering de rede VPC.
Para criar as instâncias particulares, siga estas etapas:
Se você ainda não tiver um, crie um Cloud Data Fusion privado instância. Isso inclui:
- Como configurar uma rede VPC
- Como alocar um intervalo de IP
Crie uma instância particular do Cloud SQL na mesma rede VPC da sua instância do Cloud Data Fusion.
Depois que a instância for criada, acesse a página Instâncias do Cloud SQL e abra os Detalhes da instância. Na caixa de diálogo Conectar-se a instância, copie o IP e o nome da conexão.
Criar uma VM particular 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 você também precisa
ativar o Acesso privado do Google para
a sub-rede em que a VM está localizada.
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 projetoVM_REGION
: a região em que a VM do Compute Engine está localizadaCUSTOMER_VPC_NETWORK_NAME
: o nome da sua redeCUSTOMER_VPC_SUBNET_NAME
: o valor da nomeCOMPUTE_ENGINE_VM_NAME
: o nome da VM do Compute EngineSQL_INSTANCE_CONNECTION_NAME
: a conexão da etapa anteriorCLOUD_DATA_FUSION_IP_RANGE
: o intervalo de endereços IPDB_PORT
: o número da porta do Banco de dados do Cloud SQL
Crie uma regra de firewall para permitir o tráfego de entrada do Cloud Data Fusion com o seguinte comando da CLI gcloud:
gcloud compute firewall-rules create allow-private-cdf \ --allow=tcp:22,tcp:${SQL_PORT} \ --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
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
Consiga 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}'`
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}
Descubra o IP que 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 da conexão do seu banco de dados MySQL em o Cloud Data Fusion. Você pode inserir os detalhes e testar a conexão na página do Wrangler.
Opcional: outras maneiras de se conectar ao MySQL
É possível acessar o MySQL das seguintes maneiras 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 do Studio, use o plug-in de origem do banco de dados, que propriedades semelhantes (String de conexão, Nome de usuário, Senha e Argumentos de conexão).
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 um Cloud SQL público
do Cloud SQL (usando um proxy público do Cloud SQL ou adicionando o
0.0.0.0/0
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 um Cloud SQL público com um proxy público do Cloud SQL em uma instância em uma rede VPC).
Uma instância pública do Cloud Data Fusion e um Cloud SQL particular instância.