Configurar um banco de dados do AlloyDB para PostgreSQL

As seções abaixo mostram como configurar um banco de dados do AlloyDB para PostgreSQL.

Configure a conectividade entre o Datastream e o AlloyDB

Para permitir que o Datastream se conecte à 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.

  1. Iniciar o contêiner de proxy:

    1. Ative o Cloud Shell no projeto do consumidor.
    2. Execute o script a seguir para criar o proxy TCP:
    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
    

    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 de 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
    
  2. 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.
  3. (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 a 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 em 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

  1. Ative a decodificação lógica para a instância principal do AlloyDB. No Google Cloud, defina o valor da sinalização alloydb.logical_decoding como ON. Para informações sobre como atualizar as sinalizações do banco de dados, consulte Configurar as sinalizações do banco de dados de uma instância.

  2. Conecte-se à instância do AlloyDB usando o endereço IP do proxy TCP executando o seguinte comando 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.
  3. Execute o seguinte comando para conceder privilégios de replicação ao seu usuário do banco de dados:

    ALTER USER DB_USER WITH REPLICATION;
    
  4. Crie uma publicação. Recomendamos que você crie uma publicação somente para as tabelas que quer replicar. Isso permite que o Datastream somente leia 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 publicação. É necessário 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.

    É possível criar uma publicação para todas as tabelas em um esquema. Com essa abordagem, é possível replicar alterações em tabelas na lista de esquemas especificada, incluindo tabelas que você criar no futuro:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLES IN SCHEMA1, SCHEMA2;

    Você também pode criar uma publicação para todas as tabelas do seu banco de dados. Observe que essa abordagem aumenta a carga no banco de dados de origem e no Datastream:

    CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
    
  5. 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. É necessário fornecer esse nome ao criar um stream no assistente de criação de streams do Datastream.

Criar um usuário do Datastream

  1. 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.
  2. 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.