Partilhar via


Configure PostgreSQL para ingestão no Azure Databricks

Importante

O conector PostgreSQL para Lakeflow Connect está em Visualização Pública. Entre em contato com a sua equipa de conta Databricks para se inscrever na Pré-visualização Pública.

Esta página descreve as tarefas de configuração do código-fonte para a ingestão do PostgreSQL para Azure Databricks usando o Lakeflow Connect.

Replicação lógica para captura de dados de alteração

O conector PostgreSQL utiliza replicação lógica para acompanhar alterações nas tabelas de origem. A replicação lógica permite ao conector capturar modificações de dados (inserções, atualizações e eliminações) sem exigir gatilhos ou sobrecarga significativa na base de dados de origem.

A replicação lógica do Lakeflow PostgreSQL requer o seguinte:

  1. O Lakeflow Connect suporta replicação de dados a partir da versão 13 do PostgreSQL e posteriores.

  2. Configure a base de dados para replicação lógica:

    O parâmetro wal_level PostgreSQL deve ser definido para logical.

  3. Crie publicações que incluam todas as tabelas que pretende replicar.

  4. Crie slots de replicação para cada catálogo que será replicado.

Observação

As publicações devem ser criadas antes de se criarem os slots de replicação.

Para mais informações sobre replicação lógica, consulte a documentação de Replicação Lógica no site PostgreSQL.

Visão geral das tarefas de configuração do código-fonte

Complete as seguintes tarefas no PostgreSQL antes de ingerir dados no Azure Databricks:

  1. Verifique PostgreSQL 13 ou superior

  2. Configurar o acesso à rede (grupos de segurança, regras de firewall ou VPN)

  3. Configurar replicação lógica:

    • Ativar replicação lógica (wal_level = logical)
  4. Opcional: Configurar o rastreamento DDL inline para deteção automática de alterações de esquema. Caso queira optar pelo rastreio DDL embutido, entre em contacto com o Suporte da Databricks.

Importante

Se planeia replicar a partir de várias bases de dados PostgreSQL, deve criar um slot de publicação e replicação separados para cada base de dados. O script de rastreamento DDL inline (se utilizado) também deve ser executado em cada base de dados.

Configurar replicação lógica

Para permitir a replicação lógica no PostgreSQL, configure as definições da base de dados e configure os objetos necessários.

Definir o nível WAL para lógico

O Write-Ahead Log (WAL) deve ser configurado para replicação lógica. Esta configuração normalmente requer o reinício da base de dados.

  1. Verifique a configuração atual wal_level :

    SHOW wal_level;
    
  2. Se o valor não for logical, defina wal_level = logical na configuração do servidor e reinicie o serviço PostgreSQL.

Criar um utilizador de replicação

Crie um utilizador dedicado para a ingestão do Databricks com privilégios de replicação:

CREATE USER databricks_replication WITH PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO databricks_replication;
ALTER USER databricks_replication WITH REPLICATION;

Para requisitos detalhados de privilégios, consulte requisitos de utilizador da base de dados PostgreSQL.

Definir identidade de réplica para tabelas

Para cada tabela que queres replicar, configura a identidade da réplica. A configuração correta depende da estrutura da tabela:

Estrutura da tabela IDENTIDADE DE RÉPLICA NECESSÁRIA Command
A tabela tem chave primária e não contém colunas TOASTable (por exemplo, TEXT, BYTEA, VARCHAR(n) com valores grandes) DEFAULT ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT;
A tabela possui uma chave primária, mas inclui colunas grandes de comprimento variável ("TOASTable") FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;
A tabela não tem uma chave primária FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;

Para mais informações sobre as definições de identidade de réplica, consulte Identidade de Réplica na documentação PostgreSQL.

Criar uma publicação

Crie uma publicação em cada base de dados que inclua as tabelas que pretende replicar:

-- Create a publication for specific tables
CREATE PUBLICATION databricks_publication FOR TABLE schema_name.table1, schema_name.table2;

-- Or create a publication for all tables in a database
CREATE PUBLICATION databricks_publication FOR ALL TABLES;

Observação

Deve criar uma publicação separada em cada base de dados PostgreSQL que pretende replicar.

Configurar parâmetros de slot de replicação

Antes de criar slots de replicação, configure os seguintes parâmetros do servidor:

Limitar a retenção de WAL para slots de replicação

Parâmetro: max_slot_wal_keep_size

Recomenda-se não definirmax_slot_wal_keep_size para -1 (o valor predefinido), pois isto permite um inchaço ilimitado de WAL devido à retenção por slots de replicação lentos ou inativos. Dependendo da sua carga de trabalho, defina este parâmetro para um valor finito.

Saiba mais sobre o parâmetro max_slot_wal_keep_size na documentação oficial do PostgreSQL.

Observação

Alguns fornecedores de cloud gerida não permitem a modificação deste parâmetro e, em vez disso, dependem de monitorização integrada de slots e limpeza automática. Revise o comportamento da plataforma antes de definir alertas operacionais.

Para obter mais informações, consulte:

Configurar a capacidade dos slots de replicação

Parâmetro: max_replication_slots

Cada base de dados PostgreSQL replicada requer um slot lógico de replicação. Defina este parâmetro para pelo menos o número de bases de dados a replicar, mais quaisquer necessidades de replicação existentes.

Configurar os emissores WAL

Parâmetro: max_wal_senders

Este parâmetro define o número máximo de processos emissores WAL concorrentes que transmitem dados WAL aos assinantes. Na maioria dos casos, deve ter um processo de remetente WAL para cada slot de replicação para garantir uma replicação de dados eficiente e consistente.

Configure max_wal_senders para ser pelo menos igual ao número de slots de replicação em uso, tendo em conta qualquer outro uso existente. Recomenda-se ajustar um pouco mais alto para proporcionar flexibilidade operacional.

Criar um slot de replicação

Crie um slot de replicação em cada base de dados que o gateway de ingestão Databricks utilize para acompanhar alterações:

-- Create a replication slot with the pgoutput plugin
SELECT pg_create_logical_replication_slot('databricks_slot', 'pgoutput');

Importante

  • Os slots de replicação armazenam dados WAL até serem consumidos pelo conector. Configure o max_slot_wal_keep_size parâmetro para limitar a retenção de WAL e evitar o crescimento ilimitado de WAL. Consulte Configurar parâmetros de slot de replicação para detalhes.
  • Quando elimina um pipeline de ingestão, tem de eliminar manualmente o slot de replicação associado. Consulte Limpeza dos slots de replicação.

Opcional: Configurar o rastreamento DDL em linha

O rastreamento DDL em linha é uma funcionalidade opcional que permite ao conector detetar e aplicar automaticamente alterações de esquema na base de dados de origem. Este recurso está desativado por padrão.

Advertência

A monitorização DDL inline está atualmente em versão de teste e requer entrar em contacto com o suporte da Databricks para a ativar no seu espaço de trabalho.

Para informações sobre quais as alterações de esquema que são tratadas automaticamente e quais requerem uma atualização completa, veja Como os conectores geridos lidam com a evolução do esquema? e Evolução do esquema.

Configurar rastreamento DDL embutido

Se o rastreamento DDL inline estiver ativado para o seu espaço de trabalho, complete estes passos em cada base de dados PostgreSQL:

  1. Descarregue e execute o script lakeflow_pg_ddl_change_tracking.sql :

    \i lakeflow_pg_ddl_change_tracking.sql
    
  2. Verifique se os gatilhos e a tabela de auditoria foram criados com sucesso:

    -- Check for the DDL audit table
    SELECT * FROM pg_tables WHERE tablename = 'lakeflow_ddl_audit';
    
    -- Check for the event triggers
    SELECT * FROM pg_event_trigger WHERE evtname LIKE 'lakeflow%';
    
  3. Adicione a tabela de auditoria DDL à sua publicação:

    ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
    

Notas de configuração específicas da cloud

AWS RDS e Aurora

  • Certifique-se de que o rds.logical_replication parâmetro está definido como 1 no grupo de parâmetros.

  • Configure grupos de segurança para permitir ligações a partir do espaço de trabalho Databricks.

  • O utilizador de replicação requer o papel rds_replication :

    GRANT rds_replication TO databricks_replication;
    

Base de Dados do Azure para PostgreSQL

  • Ative a replicação lógica nos parâmetros do servidor através do portal Azure ou CLI.
  • Configure regras de firewall para permitir ligações a partir do espaço de trabalho Databricks.
  • Para o Servidor Flexível, é suportada a replicação lógica. Para Servidor Único, certifica-te de que usas um nível suportado.

GCP Cloud SQL para PostgreSQL

  • Ativa a cloudsql.logical_decoding flag nas definições da instância.
  • Configure redes autorizadas para permitir ligações a partir do espaço de trabalho Databricks.
  • Certifique-se de que o cloudsql.enable_pglogical flag está definido como on se estiver a usar extensões pglogic.

Verifique a configuração

Após completar as tarefas de configuração, verifique se a replicação lógica está devidamente configurada:

  1. Verifique se o wal_level está definido para logical:

    SHOW wal_level;
    
  2. Verifique se o utilizador de replicação tem o replication privilégio:

    SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';
    
  3. Confirme que a publicação existe:

    SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
    
  4. Verifique se o slot de replicação existe:

    SELECT slot_name, slot_type, active, restart_lsn
    FROM pg_replication_slots
    WHERE slot_name = 'databricks_slot';
    
  5. Verifique a identidade da réplica das suas tabelas:

    SELECT schemaname, tablename, relreplident
    FROM pg_tables t
    JOIN pg_class c ON t.tablename = c.relname
    WHERE schemaname = 'your_schema';
    

    A relreplident coluna deve mostrar f a identidade da réplica COMPLETA.

Próximos passos

Depois de concluir a configuração do código-fonte, pode criar um gateway de ingestão e um pipeline para ingerir dados do PostgreSQL. Veja Ingerir dados do PostgreSQL.