Solução de problemas de ingestão do PostgreSQL
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 os problemas comuns com o conector PostgreSQL no Databricks LakeFlow Connect e como resolvê-los.
Solução de problemas pipeline em dutos
Os passos de resolução de problemas nesta seção aplicam-se a todos os pipelines de ingestão no LakeFlow Connect.
Se um pipeline falhar durante a execução, clique na etapa que falhou e confirme se a mensagem de erro fornece informações suficientes sobre a natureza do erro.

Você também pode verificar e download os logs cluster na página de detalhes pipeline , clicando em Atualizar detalhes no painel direito e, em seguida, em Logs . Analise os logs em busca de erros ou exceções.

Solução de problemas específicos do conector
Os passos de resolução de problemas nesta seção são específicos para o conector PostgreSQL .
Erros de permissão
Se você receber um erro de permissão, verifique se o usuário de replicação possui os privilégios necessários. Consulte os requisitos de usuário do banco de dados PostgreSQL para obter a lista completa de privilégios necessários.
ERRO: permissão negada para a tabela
Este erro indica que o usuário de replicação não tem privilégios SELECT na tabela especificada. Conceda os privilégios necessários:
GRANT SELECT ON TABLE schema_name.table_name TO databricks_replication;
ERRO: é necessário ser superusuário ou ter a função de replicação para usar os slots de replicação.
Este erro indica que o usuário de replicação não tem o privilégio REPLICATION . Atribua a função de replicação:
-- For standard PostgreSQL
ALTER USER databricks_replication WITH REPLICATION;
-- For AWS RDS/Aurora
GRANT rds_replication TO databricks_replication;
-- For GCP Cloud SQL
ALTER USER databricks_replication with REPLICATION;
Verifique se a replicação lógica está ativada.
Para verificar se a replicação lógica está ativada:
SHOW wal_level;
A saída deve ser logical. Caso contrário, atualize o parâmetro wal_level e reinicie o servidor PostgreSQL.
Para gerenciamento cloud PostgreSQL:
- AWS RDS/Aurora : Defina
rds.logical_replicationpara1no grupo de parâmetros. - Banco de Dados do Azure para PostgreSQL : Habilite a replicação lógica nos parâmetros do servidor.
- GCP cloud SQL : Defina o sinalizador
cloudsql.logical_decodingparaon.
Verifique se existe uma publicação.
Para verificar se existe uma publicação para suas tabelas:
SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
-- Check which tables are included in the publication
SELECT schemaname, tablename
FROM pg_publication_tables
WHERE pubname = 'databricks_publication';
Se a publicação não existir, crie-a:
CREATE PUBLICATION databricks_publication FOR TABLE schema_name.table_name;
Verificar identidade da réplica
Para verificar a configuração de identidade da réplica de uma tabela:
SELECT schemaname, tablename, relreplident
FROM pg_tables t
JOIN pg_class c ON t.tablename = c.relname
WHERE schemaname = 'your_schema' AND tablename = 'your_table';
A coluna relreplident deve exibir os seguintes valores:
fpara identidade de réplica COMPLETA (necessária para tabelas sem chave primária ou colunas TOASTable).dpara identidade de réplica padrão (usa key primária).
Se a identidade da réplica não estiver configurada corretamente, atualize-a:
ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;
Erros de slot de replicação
Acúmulo de WAL e problemas de espaço em disco
Se o gateway de ingestão for interrompido por um período prolongado, o slot de replicação pode causar o acúmulo de arquivos de log de gravação antecipada (WAL), potencialmente preenchendo o espaço em disco.
Para verificar o uso do disco WAL:
SELECT pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) AS retained_wal
FROM pg_replication_slots
WHERE slot_name = 'your_slot_name';
Para evitar o acúmulo de WAL:
- Garanta que o gateway de ingestão esteja em execução contínua.
- Monitore regularmente o atraso de replicação e o espaço em disco.
Se houver acúmulo de arquivos WAL, você pode remover manualmente o slot de replicação:
SELECT pg_drop_replication_slot('your_slot_name');
Se um slot de replicação for descartado ou se tornar inválido, atualize a especificação pipeline com um novo slot para esse banco de dados e execute uma refresh completa.
Tempo limite excedido ao aguardar tokens da tabela
O pipeline de ingestão pode expirar enquanto aguarda o fornecimento de informações pelo gateway. Isso pode ser devido a um dos seguintes motivos:
- Você está executando uma versão antiga do gateway.
- Ocorreu um erro ao gerar as informações necessárias. Verifique os logs do driver do gateway em busca de erros.
- A captura inicial do instantâneo está demorando mais do que o esperado. Para tabelas grandes, considere aumentar o tempo limite do pipeline ou executar a carga inicial fora do horário de pico.
conflito de nomenclatura da tabela de origem
Ingestion pipeline error: "org.apache.spark.sql.catalyst.ExtendedAnalysisException: Cannot have multiple queries named `orders_snapshot_load` for `orders`. Additional queries on that table must be named. Note that unnamed queries default to the same name as the table.
Isso indica que há um conflito de nomes devido a várias tabelas de origem chamadas orders em diferentes esquemas de origem que estão sendo ingeridas pelo mesmo pipeline de ingestão para o mesmo esquema de destino.
Crie vários pares de gateway-pipeline, gravando essas tabelas conflitantes em esquemas de destino diferentes.
Alterações de esquema incompatíveis
Uma alteração de esquema incompatível faz com que o pipeline de ingestão falhe com um erro INCOMPATIBLE_SCHEMA_CHANGE . Para continuar a replicação, acione uma refresh completa das tabelas afetadas.
Alterações de esquema incompatíveis incluem o seguinte:
- Alterar o tipo de dados de uma coluna
- Renomear uma coluna
- Alterar a key primária de uma tabela
- Remover uma coluna que faz parte da identidade da réplica.
A Databricks não pode garantir que todas as linhas anteriores à alteração do esquema tenham sido ingeridas quando o pipeline de ingestão falha devido a uma alteração de esquema incompatível.
erros de tempo limite de conexão
Se você receber erros de tempo limite de conexão, execute as seguintes verificações:
- Verifique se as regras do firewall permitem conexões do workspace Databricks .
- Verifique se o servidor PostgreSQL está acessível a partir da rede Databricks.
- Certifique-se de que o arquivo
pg_hba.confpermita conexões do intervalo de IP do Databricks. - Verifique se as credenciais de conexão estão corretas.
erros de conexão SSL/TLS
Se você receber erros de conexão SSL/TLS, realize as seguintes verificações:
-
Verifique se o servidor PostgreSQL suporta conexões SSL.
-
Verifique o parâmetro
sslna configuração do PostgreSQL:SQLSHOW ssl; -
Certifique-se de que o arquivo
pg_hba.confexige ou permite conexões SSL para o usuário de replicação. -
Para bancos de dados cloud , verifique se SSL está ativado nas configurações do servidor.
Autenticaçãodefault : não é possível configurar credenciais default
Se você receber esse erro, há um problema ao descobrir as credenciais do usuário atual. Tente substituir o seguinte:
w = WorkspaceClient()
com:
w = WorkspaceClient(host=input('Databricks Workspace URL: '), token=input('Token: '))
Consulte a seção Autenticação na documentação do SDK do Databricks para Python.
PERMISSÃO NEGADA: Você não tem autorização para criar clusters. Por favor, entre em contato com o administrador.
Contate um administrador account Databricks para conceder a você permissões Unrestricted cluster creation .
CÓDIGO DE ERRO DLT: INGESTION_GATEWAY_INTERNAL_ERROR
Verifique os arquivos stdout nos logs do driver para obter mensagens de erro detalhadas. As causas comuns incluem o seguinte:
- Erros de slot de replicação
- Problemas de configuração de publicação
- Problemas de conectividade de rede
- Privilégios insuficientes no banco de dados de origem