Nesta página, descrevemos como configurar a captura de dados alterados (CDC) para transmitir dados de um banco de dados do AlloyDB para PostgreSQL para um destino compatível, como o BigQuery ou o Cloud Storage.
Configure a conectividade entre o Datastream e o AlloyDB
Para que o Datastream possa se conectar à instância do AlloyDB, é necessário configurar um proxy TCP no projeto do consumidor. A imagem do proxy TCP é disponibilizada publicamente para todos os clientes.
- Iniciar o contêiner de proxy: - Ative o Cloud Shell no projeto do consumidor.
- Execute o script a seguir para criar o proxy TCP e desativar a rede de ponte para evitar problemas de conectividade:
 - gcloud compute instances create-with-container \ --zone=REGION_ID VM_NAME \ --container-image gcr.io/dms-images/tcp-proxy \ --tags=dms-tcp-proxy \ --container-env=SOURCE_CONFIG=ALLOYDB_IP:ALLOYDB_PORT \ --can-ip-forward \ --network=SOURCE_AND_DEST_VPC \ --machine-type=VM_TIER \ --metadata=startup-script='#! /bin/bash mkdir -p /etc/docker cat <<EOF > /etc/docker/daemon.json {"bridge":"none"} EOF systemctl restart docker'- Substitua: - REGION_ID: a região em que você quer criar o proxy TCP.
- VM_NAME: o nome da máquina virtual.
- ALLOYDB_IP: o endereço IP da instância do AlloyDB para PostgreSQL.
- ALLOYDB_PORT: o número da porta da instância do AlloyDB para PostgreSQL.
- SOURCE_AND_DEST_VPC: a rede VPC a que a origem e o destino estão conectados.
- VM_TIER: o tipo da sua máquina virtual.
 - Um comando de exemplo com parâmetros atualizados: - gcloud compute instances create-with-container \ --zone=us-central1-c ds-tcp-proxy \ --container-image gcr.io/dms-images/tcp-proxy \ --tags=ds-tcp-proxy \ --container-env=SOURCE_CONFIG=10.16.0.5:5432 \ --can-ip-forward \ --network=default \ --machine-type=e2-micro --metadata=startup-script='#! /bin/bash mkdir -p /etc/docker cat <<EOF > /etc/docker/daemon.json {"bridge":"none"} EOF systemctl restart docker'
- Execute o script para imprimir o endereço IP do proxy TCP com as seguintes entradas: - gcloud compute instances describe VM_NAME \ --format="yaml(networkInterfaces[].networkIP)" \ --zone=REGION_ID- Substitua: - VM_NAME: o nome da sua máquina virtual.
- REGION_ID: a região em que você criou o proxy TCP.
 
- (Opcional) Crie uma regra de firewall para limitar o tráfego de entrada no proxy TCP: - gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --direction=INGRESS \ --priority=1000 \ --target-tags=dms-tcp-proxy \ --network=SOURCE_VPC \ --action=ALLOW \ --rules=tcp:ALLOYDB_PORT \ --source-ranges=IP_RANGE- Substitua: - FIREWALL_RULE_NAME: o nome da regra de firewall.
- SOURCE_VPC: a rede VPC a que sua origem está conectada.
- ALLOYDB_PORT: o número da porta da instância do AlloyDB para PostgreSQL.
- IP_RANGE: o intervalo de endereços IP a que você quer limitar o tráfego de entrada.
 - Um exemplo de comando para permitir o tráfego de entrada vindo de todos os endereços IP: - gcloud compute firewall-rules create ds-proxy1 \ --direction=INGRESS \ --priority=1000 \ --target-tags=ds-tcp-proxy \ --network=default \ --action=ALLOW \ --rules=tcp:5432
Configurar o AlloyDB para replicação
- Ative a decodificação lógica para a instância principal do AlloyDB. Em Google Cloud, defina o valor da flag - alloydb.logical_decodingcomo ON. Para informações sobre como atualizar as flags do banco de dados, consulte Configurar flags de banco de dados de uma instância.
- Conecte-se à instância do AlloyDB usando o endereço IP do proxy TCP executando o comando a seguir em qualquer VM na mesma VPC: - psql -h PROXY_IP \ -U DB_USER \ -d DB_NAME- Substitua: - PROXY_IP: o endereço IP do proxy TCP.
- DB_USER: o nome de usuário do banco de dados do AlloyDB.
- DB_NAME: o nome do banco de dados do AlloyDB.
 
- Execute o comando a seguir para conceder privilégios de replicação ao usuário do banco de dados: - ALTER USER DB_USER WITH REPLICATION; 
- Crie uma publicação. Recomendamos que você crie uma publicação apenas para as tabelas que quer replicar. Isso permite que o Datastream leia apenas os dados relevantes e reduz a carga no banco de dados e no Datastream: - CREATE PUBLICATION PUBLICATION_NAME FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2; - Substitua: - PUBLICATION_NAME: o nome da sua publicação. Você precisa fornecer esse nome ao criar um stream no assistente de criação de streams do Datastream.
- SCHEMA: o nome do esquema que contém a tabela.
- TABLE: o nome da tabela que você quer replicar.
 - Também é possível criar uma publicação para todas as tabelas no seu banco de dados. Essa abordagem aumenta a carga no banco de dados de origem e no Datastream: - CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES; 
- Execute o comando a seguir para criar um slot de replicação. - SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');- Substitua: - REPLICATION_SLOT_NAME: o nome do slot de replicação. Você precisará fornecer esse nome ao criar um stream no assistente de criação de streams do Datastream.
 
Criar um usuário do Datastream
- Para criar um usuário do Datastream, digite o seguinte comando do PostgreSQL: - CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD'; - Substitua: - USER_NAME: o nome do usuário do Datastream que você quer criar.
- USER_PASSWORD: a senha de login do usuário do Datastream que você quer criar.
 
- Conceda os seguintes privilégios ao usuário que você criou: - GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME; GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME; ALTER DEFAULT PRIVILEGES IN SCHEMA SCHEMA_NAME GRANT SELECT ON TABLES TO USER_NAME; - Substitua: - SCHEMA_NAME: o nome do esquema a que você quer conceder os privilégios.
- USER_NAME: o usuário a quem você quer conceder os privilégios.
 
A seguir
- Saiba mais sobre como o Datastream funciona com fontes do PostgreSQL.