Pular para o conteúdo principal

Solução de problemas de ingestão do PostgreSQL

info

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.

Visualizar o registro de eventos pipeline na interface do usuário.

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.

Visualize os detalhes da atualização pipeline na interface do usuário.

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:

SQL
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:

SQL
-- 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:

SQL
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_replication para 1 no 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_decoding para on.

Verifique se existe uma publicação.

Para verificar se existe uma publicação para suas tabelas:

SQL
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:

SQL
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:

SQL
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:

  • f para identidade de réplica COMPLETA (necessária para tabelas sem chave primária ou colunas TOASTable).
  • d para identidade de réplica padrão (usa key primária).

Se a identidade da réplica não estiver configurada corretamente, atualize-a:

SQL
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:

SQL
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:

  1. Garanta que o gateway de ingestão esteja em execução contínua.
  2. 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:

SQL
SELECT pg_drop_replication_slot('your_slot_name');
atenção

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.
nota

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:

  1. Verifique se as regras do firewall permitem conexões do workspace Databricks .
  2. Verifique se o servidor PostgreSQL está acessível a partir da rede Databricks.
  3. Certifique-se de que o arquivo pg_hba.conf permita conexões do intervalo de IP do Databricks.
  4. 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:

  1. Verifique se o servidor PostgreSQL suporta conexões SSL.

  2. Verifique o parâmetro ssl na configuração do PostgreSQL:

    SQL
    SHOW ssl;
  3. Certifique-se de que o arquivo pg_hba.conf exige ou permite conexões SSL para o usuário de replicação.

  4. 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