Configurar o PostgreSQL para ingestão no Databricks
Visualização
O conector PostgreSQL para LakeFlow Connect está em versão prévia pública. Entre em contato com a equipe da sua account Databricks para se inscrever na Prévia Pública.
Esta página descreve a tarefa de configuração da origem para ingestão de dados do PostgreSQL no Databricks usando LakeFlow Connect.
Replicação lógica para captura de dados de alterações (CDC)
O conector PostgreSQL usa replicação lógica para rastrear alterações nas tabelas de origem. A replicação lógica permite que o conector capture modificações de dados (inserções, atualizações e exclusões) sem exigir gatilhos ou sobrecarga significativa no banco de dados de origem.
A replicação lógica LakeFlow PostgreSQL requer o seguinte:
-
LakeFlow Connect suporta a replicação de dados do PostgreSQL versão 13 e posteriores.
-
Configure o banco de dados para replicação lógica:
Para AWS RDS e Aurora, defina o parâmetro
rds.logical_replicationcomo1. -
Crie publicações que incluam todas as tabelas que você deseja replicar.
-
Crie slots de replicação para cada catálogo que será replicado.
As publicações devem ser criadas antes da criação dos espaços de replicação.
Para obter mais informações sobre replicação lógica, consulte a documentação sobre Replicação Lógica no site PostgreSQL .
Visão geral da tarefa de configuração da fonte
Conclua a seguinte tarefa no PostgreSQL antes de ingerir os dados no Databricks:
-
Verifique se PostgreSQL é versão 13 ou superior.
-
Configure o acesso à rede (grupos de segurança, regras de firewall ou VPN).
-
Configurar replicação lógica:
-
Para AWS RDS/Aurora, defina
rds.logical_replication = 1. -
Crie um usuário de replicação com os privilégios necessários. Consulte os requisitos de usuário do banco de dados PostgreSQL.
-
Defina a identidade da réplica para as tabelas. Consulte Definir identidade de réplica para tabelas
-
Criação de publicações e espaços para replicação
-
-
Opcional: Configure o acompanhamento DDL embutido para detecção automática de alterações de esquema. Caso prefira o acompanhamento DDL embutido, entre em contato com o suporte Databricks .
Se você planeja replicar dados de vários bancos de dados PostgreSQL, deverá criar um slot de publicação e um slot de replicação separados para cada banco de dados. O script de acompanhamento DDL embutido (se utilizado) também deve ser executado em cada banco de dados.
Configurar replicação lógica
Para habilitar a replicação lógica no PostgreSQL, configure as definições do banco de dados e defina os objetos necessários.
Defina o nível WAL para lógico.
O Write-Ahead Log (WAL) deve ser configurado para replicação lógica. Essa configuração normalmente requer a reinicialização do banco de dados.
-
Verifique a configuração atual
wal_level:SQLSHOW wal_level; -
Se o valor não for
logical, definawal_level = logicalna configuração do servidor e reinicie o serviço PostgreSQL.
Criar um usuário de replicação
Crie um usuário dedicado para ingestão de dados no 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 obter informações detalhadas sobre os requisitos de privilégio, consulte os requisitos de usuário do banco de dados PostgreSQL.
Defina a identidade da réplica para as tabelas.
Para cada tabela que você deseja replicar, configure a identidade da réplica. A configuração correta depende da estrutura da tabela:
Estrutura da tabela | IDENTIDADE DE RÉPLICA OBRIGATÓRIA | Comando |
|---|---|---|
A tabela possui key primária e não contém colunas TOASTable (por exemplo, |
| |
A tabela possui key primária, mas inclui colunas grandes de comprimento variável (TOASTable). |
| |
A tabela não possui keyprimária. |
|
Para obter mais informações sobre as configuraçõ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 banco de dados que inclua as tabelas que você deseja 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;
Você deve criar uma publicação separada em cada banco de dados PostgreSQL que deseja 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
É recomendável não definir max_slot_wal_keep_size como -1 (o valor default ), pois isso permite um inchaço ilimitado do WAL devido à retenção por slots de replicação atrasados ou inativos. Dependendo da sua carga de trabalho, defina este parâmetro com um valor finito.
Saiba mais sobre o parâmetro max_slot_wal_keep_size na documentação oficial do PostgreSQL.
Alguns provedores cloud gerenciada não permitem a modificação desse parâmetro e, em vez disso, dependem do monitoramento de slots integrado e da limpeza automática. Analise o comportamento da plataforma antes de configurar um alerta operacional.
Para saber mais, consulte:
Configurar capacidade de slots de replicação
Parâmetro : max_replication_slots
Cada banco de dados PostgreSQL que está sendo replicado requer um slot de replicação lógica. Defina este parâmetro para, no mínimo, o número de bancos de dados que estão sendo replicados, mais quaisquer necessidades de replicação existentes.
Configurar remetentes WAL
Parâmetro : max_wal_senders
Este parâmetro define o número máximo de processos de envio WAL simultâneos que transmitem dados WAL aos assinantes. Na maioria dos casos, você deve ter um processo de envio de 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, levando em consideração qualquer outro uso existente. Recomenda-se definir um valor ligeiramente superior para proporcionar flexibilidade operacional.
Crie um slot de replicação
Crie um slot de replicação em cada banco de dados que o gateway de ingestão do Databricks usará para rastrear as alterações:
-- Create a replication slot with the pgoutput plugin
SELECT pg_create_logical_replication_slot('databricks_slot', 'pgoutput');
- Os slots de replicação armazenam dados WAL até que sejam consumidos pelo conector. Configure o parâmetro
max_slot_wal_keep_sizepara limitar a retenção de WAL e evitar o crescimento ilimitado de WAL. Consulte a seção Configurar parâmetros do slot de replicação para obter detalhes. - Ao excluir um pipeline de ingestão, você deve remover manualmente o slot de replicação associado. Consulte Limpar slots de replicação.
Opcional: Configurar acompanhamento DDL in-line
O acompanhamento DDL embutido é um recurso opcional que permite ao conector detectar e aplicar automaticamente as alterações de esquema do banco de dados de origem. Este recurso está desativado por default.
O acompanhamento DDL embutido está atualmente em versão prévia e requer contato com o Suporte Databricks para habilitá-lo em seu workspace.
Para obter informações sobre quais alterações de esquema são tratadas automaticamente e quais requerem uma refresh completa, consulte Como gerenciar conectores lidam com a evolução do esquema? e evolução do esquema.
Configurar acompanhamento DDL inline
Se o acompanhamento DDL embutido estiver habilitado para seu workspace, conclua estas etapas em cada banco de dados PostgreSQL :
-
Baixe e execute o script lakeflow_pg_ddl_change_tracking.sql :
SQL\i lakeflow_pg_ddl_change_tracking.sql -
Verifique se os gatilhos e a tabela de auditoria foram criados com sucesso:
SQL-- 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%'; -
Adicione a tabela de auditoria DDL à sua publicação:
SQLALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
notas de configuração específicas da nuvem
AWS RDS e Aurora
-
Certifique-se de que o parâmetro
rds.logical_replicationesteja definido como1no grupo de parâmetros. -
Configure os grupos de segurança para permitir conexões do workspace Databricks .
-
O usuário de replicação requer a função
rds_replication:SQLGRANT rds_replication TO databricks_replication;
Banco de Dados do Azure para PostgreSQL
- Habilite a replicação lógica nos parâmetros do servidor por meio do portal do Azure ou da CLI.
- Configure as regras do firewall para permitir conexões do workspace Databricks .
- Para o Flexible Server, a replicação lógica é suportada. Para servidores individuais, certifique-se de estar usando um plano compatível.
GCP Cloud SQL para PostgreSQL
- Ative a flag
cloudsql.logical_decodingnas configurações da instância. - Configure as redes autorizadas para permitir conexões do workspace Databricks .
- Certifique-se de que o sinalizador
cloudsql.enable_pglogicalesteja definido comoonse estiver usando extensões pglogical.
Verifique a configuração
Após concluir a tarefa de configuração, verifique se a replicação lógica está configurada corretamente:
-
Verifique se
wal_levelestá definido comological:SQLSHOW wal_level; -
Verifique se o usuário de replicação possui o privilégio
replication:SQLSELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication'; -
Confirme se a publicação existe:
SQLSELECT * FROM pg_publication WHERE pubname = 'databricks_publication'; -
Verifique se o slot de replicação existe:
SQLSELECT slot_name, slot_type, active, restart_lsn
FROM pg_replication_slots
WHERE slot_name = 'databricks_slot'; -
Verifique a identidade da réplica das suas tabelas:
SQLSELECT schemaname, tablename, relreplident
FROM pg_tables t
JOIN pg_class c ON t.tablename = c.relname
WHERE schemaname = 'your_schema';A coluna
relreplidentdeve mostrarfpara identidade de réplica COMPLETA.
Próximos passos
Após concluir a configuração da fonte, você pode criar um gateway de ingestão e um pipeline para ingerir dados do PostgreSQL. Consulte Ingerir dados do PostgreSQL.