Configure uma base de dados PostgreSQL autogerida para CDC

Esta página descreve como configurar a captura de dados de alterações (CDC) para transmitir dados de uma base de dados PostgreSQL autogerida para um destino suportado, como o BigQuery ou o Cloud Storage.

Ative a replicação lógica na base de dados

  1. Defina o parâmetro wal_level na sua base de dados adicionando wal_level=logical ao ficheiro postgresql.conf.

  2. Reinicie o servidor.

Crie uma publicação e um espaço de replicação

  1. Inicie sessão numa consola do PostgreSQL como superutilizador.

  2. Crie uma publicação. Recomendamos que crie uma publicação apenas para as tabelas que quer replicar. Isto permite que o Datastream leia apenas os dados relevantes e reduz a carga na base de dados e no Datastream:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;

    Substitua o seguinte:

    • PUBLICATION_NAME: o nome da sua publicação. Tem de indicar este nome quando criar uma stream no assistente de criação de streams de streams de dados.
    • SCHEMA: o nome do esquema que contém a tabela.
    • TABLE: o nome da tabela que quer replicar.

    Pode criar uma publicação para todas as tabelas num esquema. Esta abordagem permite-lhe replicar alterações para tabelas na lista especificada de esquemas, incluindo tabelas que criar no futuro:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLES IN SCHEMA SCHEMA1, SCHEMA2;

    Também pode criar uma publicação para todas as tabelas na sua base de dados. Tenha em atenção que esta abordagem aumenta a carga na base de dados de origem e no Datastream:

    CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
    
  3. Crie um espaço de replicação introduzindo o seguinte comando SQL:

    SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');

    Substitua o seguinte:

    • REPLICATION_SLOT_NAME: o nome da sua ranhura de replicação. Tem de indicar este nome quando criar uma stream no assistente de criação de streams de streams de dados.

Crie um utilizador da stream de dados

  1. Para criar um utilizador do Datastream, introduza os seguintes comandos SQL:

    CREATE USER USER_NAME WITH ENCRYPTED PASSWORD 'USER_PASSWORD';

    Substitua o seguinte:

    • USER_NAME: o nome do utilizador do fluxo de dados que quer criar.
    • USER_PASSWORD: a palavra-passe de início de sessão do utilizador do fluxo de dados que quer criar.
  2. Conceda os seguintes privilégios ao utilizador que criou:

    ALTER ROLE USER_NAME WITH REPLICATION;
    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 o seguinte:

    • USER_NAME: o utilizador ao qual quer conceder os privilégios.
    • SCHEMA_NAME: o nome do esquema ao qual quer conceder os privilégios.

O que se segue?