Manutenção de Openflow Connector for PostgreSQL

Nota

O conector está sujeito aos Termos do conector Snowflake.

Este tópico descreve considerações importantes sobre manutenção e práticas recomendadas para manter o Openflow Connector for PostgreSQL ao fazer alterações no banco de dados PostgreSQL de origem. Além disso, ele descreve como reiniciar a replicação de tabela e reinstalar o conector.

Reiniciar a replicação da tabela

Uma tabela no estado FAILED, por exemplo, devido a uma chave primária ausente ou alteração de esquema incompatível, não é reiniciada automaticamente. Se uma tabela entrar no estado FAILED, ou se você precisar reiniciar a replicação do zero, use o procedimento a seguir para remover e adicionar novamente a tabela à replicação.

Nota

Se a falha foi causada por um problema na tabela de origem, como a falta de uma chave primária, resolva esse problema no banco de dados de origem antes de continuar.

  1. Remova a tabela da replicação seguindo um destes métodos:

    • Adicione a tabela ao parâmetro Re-snapshot Table Exclusions para excluí-lo temporariamente da replicação. Esse método é prático quando a tabela é correspondida por um Included Table Regex que você não quer alterar.

    • No contexto de parâmetros de ingestão, remova a tabela de Included Table Names ou modifique o Included Table Regex para que a tabela não seja mais correspondida.

  2. Verifique se a tabela foi removida:

    1. Na tela do tempo de execução do Openflow, clique com o botão direito do mouse em um grupo de processadores e escolha Controller Services.

    2. Na tabela com a lista de serviços do controlador, localize a linha Table State Store, clique nos três pontos verticais à direita da linha e escolha View State.

    Importante

    É necessário aguardar até que o estado da tabela seja totalmente removido da lista antes de prosseguir. Não continue até que esta alteração de configuração tenha sido concluída.

  3. Limpe o destino: assim que o estado da tabela for exibido como totalmente removido, execute DROP manualmente da tabela de destino no Snowflake. Observe que o conector não substituirá uma tabela de destino existente durante a fase do instantâneo. Se a tabela ainda existir, a replicação falhará novamente. Opcionalmente, a tabela de diário e o fluxo também podem ser removidos se não forem mais necessários.

  4. Adicione novamente a tabela revertendo a alteração feita na primeira etapa: remova a tabela de Re-snapshot Table Exclusions ou adicione-a novamente a Included Table Names ou Included Table Regex. Depois disso, o conector captura um novo instantâneo da tabela.

  5. Verifique a reinicialização: consulte Table State Store seguindo as instruções já apresentadas. O estado da tabela deve aparecer com status NEW, depois passar para SNAPSHOT_REPLICATION e, por fim, INCREMENTAL_REPLICATION.

Atualização do PostgreSQL

Atualizar o conector requer uma abordagem diferente, dependendo se o PostgreSQL está sendo atualizado para a próxima versão secundária ou principal.

Atualizações de versões secundárias

  • São seguras para os dados.

  • Não exigem tratamento especial.

  • Exigem a interrupção do conector durante a atualização para evitar relatar problemas de conectividade.

  • Continuam replicando após a atualização, sem perda de dados.

Atualizações da versão principal

  • Exigem que o servidor PostgreSQL descarte slots de replicação, incluindo aqueles usados ​ pelo conector.

  • Não conseguem preservar ou migrar slots de replicação para a nova versão. Consulte também Atualizações para versões PostgresSQL 17 e posteriores.

  • Reiniciam a replicação de todas as tabelas da fase de instantâneo anterior.

Para realizar uma atualização de versão secundária, faça o seguinte:

  1. Interrompa o conector, incluindo todos os processadores e serviços dele.

  2. Atualize o PostgreSQL.

  3. Reinicie o conector.

Para realizar uma atualização de versão principal, faça o seguinte:

  1. Remova todas as tabelas da replicação no conector.

  2. Aguarde até que todas as filas no conector estejam vazias.

  3. Interrompa o conector, incluindo todos os processadores e serviços dele.

  4. Abra o grupo Incremental Load no conector.

  5. Clique com o botão direito do mouse no processador superior do grupo, Read PostgreSQL CDC Stream, e selecione View state.

  6. Clique em Clear state.

  7. Clique em Close.

  8. Atualize o PostgreSQL.

  9. Reinicie o conector. Um novo slot de replicação será criado.

  10. Adicione novamente todas as tabelas para iniciar a replicação.

Atualizações para versões PostgresSQL 17 e posteriores

A atualização para a versão PostgreSQL 17 foi aprimorada de forma que não é mais necessário remover slots de replicação ao atualizar para versões posteriores, como 17.1 » 18.0. A atualização para a versão PostgreSQL 17.0 ou posterior a partir de versões anteriores (16 e anteriores) remove slots de replicação e deve ser tratada como uma atualização principal. Versões futuras do PostgreSQL também podem aprimorar ainda mais o processo de atualização.

Reinstalar o conector

Esta seção descreve como reinstalar o conector. Ele aborda situações em que o novo conector é instalado no mesmo tempo de execução, ou quando é movido para um novo tempo de execução. A reinstalação é usada muitas vezes em conjunto com a replicação incremental com snapshots.

Aviso

Para que o conector possa continuar a replicar a partir da mesma posição de fluxo CDC em que parou antes da reinstalação, o banco de dados de origem deve reter o WAL por tempo suficiente para cobrir o tempo desde que o conector antigo foi interrompido e o novo conector foi iniciado. Certifique-se de que o parâmetro max_wal_size do servidor PostgreSQL seja alto o suficiente, dependendo do seu tráfego, e mantenha o tempo de reinstalação no mínimo.

Pré-requisitos

Revise e anote os valores de contexto dos parâmetros do conector. Se você estiver reinstalando o conector no mesmo tempo de execução, É possível reutilizar o contexto existente. Se a nova instância estiver localizada em um tempo de execução diferente, você terá que inserir novamente todos os parâmetros.

Para reinstalar o conector:

  1. Termine o processamento de todos os FlowFiles em andamento no conector existente e, em seguida, interrompa o conector.

    1. Faça login no Snowsight.

    2. No menu de navegação, selecione Ingestion » Openflow.

    3. Selecione Launch Openflow.

    4. No painel Openflow, selecione a guia Runtimes.

    5. Selecione o tempo de execução que contém o conector.

    6. Selecione o conector.

    7. Pare o processador mais alto Set Tables for Replication no grupo Snapshot Load.

    8. Pare o processador mais alto Read PostgreSQL CDC Stream no grupo Incremental Load.

    9. Se você alterou o valor do parâmetro Merge Task Schedule CRON, retorne-o para * * * * * ?, caso contrário, as filas não serão esvaziadas até a próxima execução agendada.

      Aguarde até que todos os FlowFiles do conector tenham sido processados e todas as filas estejam vazias. Quando todos os FlowFiles tiverem sido processados, o valor de Queued no grupo de processadores do conector se tornará zero. Se houver itens restantes nas filas do conector original, poderá haver lacunas de dados quando o novo conector for iniciado.

    10. Pare todos os processadores e serviços de controle no conector.

  2. Encontre e copie o nome do slot de replicação usado pelo conector original, visualizando o estado do processador mais alto no grupo Incremental Load com nome Read PostgreSQL CDC Stream. O nome do slot de replicação é armazenado sob a chave replication.slot.name. Copie o valor da chave para um editor de texto.

  3. Crie uma nova instância do conector. Se você estiver usando o mesmo tempo de execução do conector original, é possível optar por manter os contextos de parâmetro existentes e reutilizar as configurações.

    Cuidado

    O conector existente pode permanecer no tempo de execução e não interferir na nova instância, desde que permaneça parado.

  4. Se você estiver instalando em um tempo de execução diferente ou tiver excluído os contextos de parâmetro anteriores, insira todas as definições de configuração nos novos contextos de parâmetro, incluindo os nomes de tabela e padrões conforme descrito em Configure o Openflow Connector for PostgreSQL.

  5. Abra o contexto PostgreSQL Ingestion Parameters e defina o parâmetro Ingestion Type como incremental. Para mais informações sobre as preocupações, consulte Habilitação de replicação incremental sem instantâneos.

  6. Abra o contexto PostgreSQL Source Parameters, e defina o Replication Slot Name para o valor que você copiou anteriormente.

  7. Inicie o novo conector.

Notas de uso

O novo conector usará as mesmas tabelas de destino existentes criadas pelo conector original, mas criará novas tabelas de diário.