Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
O conector do PostgreSQL para Lakeflow Connect está em Versão Prévia Pública. Entre em contato com sua equipe de conta do Databricks para se inscrever na Versão Prévia Pública.
Esta página descreve as tarefas de configuração de origem para ingestão do PostgreSQL no Azure Databricks usando o Lakeflow Connect.
Replicação lógica para captura de dados de alteração
O conector PostgreSQL usa replicação lógica para controlar as alterações nas tabelas de origem. A replicação lógica permite que o conector capture alterações de dados (inserções, atualizações e exclusões) sem a necessidade de gatilhos ou sobrecarga significativa no banco de dados de origem.
A replicação lógica do Lakeflow PostgreSQL requer o seguinte:
O Lakeflow Connect dá suporte à replicação de dados do PostgreSQL versão 13 e posterior.
Configure o banco de dados para replicação lógica:
O parâmetro
wal_levelPostgreSQL deve ser definido comological.Crie publicações que incluam todas as tabelas que você deseja replicar.
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 obter mais informações sobre replicação lógica, consulte a documentação de Replicação Lógica no site do PostgreSQL.
Visão geral das tarefas de configuração de origem
Conclua as seguintes tarefas no PostgreSQL antes de ingerir dados no Azure Databricks:
Verificar o PostgreSQL 13 ou superior
Configurar o acesso à rede (grupos de segurança, regras de firewall ou VPN)
Configurar a replicação lógica:
- Habilitar replicação lógica (
wal_level = logical)
- Crie um usuário de replicação com privilégios necessários. Consulte os requisitos de usuário do banco de dados PostgreSQL
- Definir identidade de réplica nas tabelas. Consulte Definir identidade de réplica para tabelas
- Criando publicações e slots de replicação
- Habilitar replicação lógica (
Opcional: configure o acompanhamento de DDL embutido para detecção automática de alterações de esquema. Caso deseje optar pelo rastreamento de DDL inline, entre em contato com o suporte do Databricks.
Importante
Se você planeja replicar de vários bancos de dados PostgreSQL, deverá criar um slot de publicação e replicação separado para cada banco de dados. O script de acompanhamento de DDL embutido (se usado) também deve ser executado em cada banco de dados.
Configurar a replicação lógica
Para habilitar a replicação lógica no PostgreSQL, defina as configurações do banco de dados e configure os objetos necessários.
Definir o nível WAL como lógico
O Write-Ahead Log (WAL) deve ser configurado para replicação lógica. Essa configuração normalmente requer uma reinicialização de banco de dados.
Verifique a configuração atual
wal_level:SHOW wal_level;Se o valor não for
logical, configurewal_level = logicalna configuração do servidor e reinicie o serviço do PostgreSQL.
Criar um usuário de replicação
Crie um usuário dedicado para 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 obter requisitos de privilégio detalhados, consulte os requisitos de usuário do banco de dados PostgreSQL.
Definir a identidade da réplica para 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 NECESSÁRIA | Command |
|---|---|---|
A tabela tem chave primária e não contém colunas TOASTable (por exemplo, TEXT, BYTEAVARCHAR(n) com valores grandes) |
DEFAULT |
ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT; |
| A tabela tem chave primária, mas inclui colunas grandes e de tamanho 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 obter mais informações sobre as configurações de identidade de réplica, consulte a Identidade da Réplica na documentação do 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;
Observação
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 de servidor:
Limitar a retenção do WAL para slots de replicação
Parâmetro: max_slot_wal_keep_size
É recomendável não definirmax_slot_wal_keep_size-1 como (o valor padrão), pois isso permite um bloat WAL excessivo devido à retenção por slots de replicação inativos ou atrasados. Dependendo da carga de trabalho, defina esse parâmetro como um valor finito.
Saiba mais sobre o parâmetro max_slot_wal_keep_size na documentação oficial do PostgreSQL.
Observação
Alguns provedores de nuvem gerenciados não permitem a modificação desse parâmetro e, em vez disso, dependem do monitoramento de slot incorporado e da auto-limpeza. Examine o comportamento da plataforma antes de definir alertas operacionais.
Para obter mais informações, consulte:
Configurar a capacidade do slot 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 esse parâmetro como pelo menos o número de bancos de dados que estão sendo replicados, além de quaisquer necessidades de replicação existentes.
Configurar remetentes do WAL
Parâmetro: max_wal_senders
Esse parâmetro define o número máximo de processos de remetente WAL simultâneos que transmitem dados WAL aos assinantes. Na maioria das vezes, você deve ter um processo de envio WAL para cada slot de replicação para garantir a replicação de dados de maneira eficiente e consistente.
Configure max_wal_senders para ser pelo menos igual ao número de slots de replicação em uso, contabilizando qualquer outro uso existente. É recomendável defini-lo um pouco mais alto para fornecer flexibilidade operacional.
Criar 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 controlar as 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 contêm dados WAL até serem consumidos pelo conector. Configure o parâmetro
max_slot_wal_keep_sizepara limitar a retenção de WAL e impedir o crescimento descontrolado do WAL. Consulte Configurar parâmetros de slot de replicação para obter detalhes. - Ao excluir um pipeline de ingestão, você deve remover manualmente o slot de replicação associado. Veja Limpeza dos slots de replicação.
Opcional: configurar o acompanhamento de DDL embutido
O rastreamento de DDL em linha é um recurso opcional que permite a um conector detectar e aplicar automaticamente alterações de esquema do banco de dados de origem. Esta funcionalidade está desativada por predefinição.
Aviso
O acompanhamento de DDL embutido está atualmente em versão prévia e requer entrar em contato com o Suporte do Databricks para habilitá-lo em seu workspace.
Para obter informações sobre quais alterações de esquema são tratadas automaticamente e quais exigem uma atualização completa, confira Como os conectores gerenciados lidam com a evolução do esquema? e a evolução do esquema.
Configurar o monitoramento de DDL em linha
Se o acompanhamento de DDL integrado tiver sido habilitado para seu workspace, conclua estas etapas em cada banco de dados PostgreSQL:
Baixe e execute o script lakeflow_pg_ddl_change_tracking.sql :
\i lakeflow_pg_ddl_change_tracking.sqlVerifique se os gatilhos e a tabela de auditoria foram criados com êxito:
-- 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:
ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
Notas de configuração específicas da nuvem
AWS RDS e Aurora
Verifique se o parâmetro
rds.logical_replicationestá definido como1no grupo de parâmetros.Configure grupos de segurança para permitir conexões do workspace Databricks.
O usuário de replicação requer a
rds_replicationfunção:GRANT 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 de firewall para permitir conexões do workspace do Databricks.
- Para o Servidor Flexível, há suporte para replicação lógica. Para o Servidor Único, verifique se você está usando uma camada com suporte.
SQL de Nuvem do GCP para PostgreSQL
- Habilite o
cloudsql.logical_decodingsinalizador nas configurações da instância. - Configure redes autorizadas para permitir conexões do workspace do Databricks.
- Verifique se o
cloudsql.enable_pglogicalsinalizador está definido paraonse estiver usando extensões pglogical.
Verificar a configuração
Depois de concluir as tarefas de instalação, verifique se a replicação lógica está configurada corretamente:
Verifique se
wal_levelestá configurado paralogical:SHOW wal_level;Verifique se o usuário de replicação tem o
replicationprivilégio:SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';Confirme se a publicação existe:
SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';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';Verifique a identidade da réplica para suas tabelas:
SELECT schemaname, tablename, relreplident FROM pg_tables t JOIN pg_class c ON t.tablename = c.relname WHERE schemaname = 'your_schema';A coluna
relreplidentdeve mostrarfpara a identidade de réplica FULL.
Próximas etapas
Depois de concluir a configuração de origem, você pode criar um gateway de ingestão e um pipeline para ingerir dados do PostgreSQL. Consulte os dados de ingestão do PostgreSQL.