Trabalhe com ficheiros de registo WAL da base de dados PostgreSQL

O Datastream usa o registo de transações WAL (Write Ahead Log) do PostgreSQL para ler streams do PostgreSQL. O registo é armazenado em ficheiros WAL no servidor da base de dados. Cada registo no registo WAL representa uma única alteração aos dados reais numa das tabelas na base de dados.

Defina parâmetros de configuração para ficheiros WAL do PostgreSQL

Recomendamos que aplique as seguintes definições de configuração à sua base de dados PostgreSQL:

  • max_slot_wal_keep_size: defina este parâmetro (disponível apenas para o PostgreSQL 13 e superior) para limitar a quantidade de armazenamento usado pelo espaço de replicação. Isto é particularmente importante para transações de longa duração que, em casos extremos, podem fazer com que o tamanho do ficheiro WAL ocupe todo o armazenamento e bloqueie a base de dados.

  • statement_timeout: defina este parâmetro para um valor selecionado para reduzir a latência causada por transações de longa duração. Também pode usar statement_timeout como medida de precaução alternativa para bases de dados que não suportam max_slot_wal_keep_size.

  • wal_sender_timeout: defina este parâmetro como 0 (para desativar o limite de tempo) ou para um valor igual ou superior a 10 minutos.

Se planear criar mais de 10 streams ou o número de slots de replicação lógica usados por outros recursos, além do número de streams planeadas, exceder 10, certifique-se de que modifica os seguintes parâmetros:

  • max_replication_slots: aumente o valor deste parâmetro, consoante o número de slots de replicação definidos para a sua base de dados (precisa de 1 slot de replicação por stream). Só pode definir max_replication_slots no início do servidor.

  • max_wal_senders: aumente o valor deste parâmetro para que seja superior ao valor do parâmetro max_replication_slots. Só pode definir max_wal_senders quando iniciar o servidor.

Otimize os ficheiros de registo WAL

Para evitar a latência elevada das suas streams e o crescimento rápido no tamanho dos ficheiros de registo WAL ao replicar dados de uma origem PostgreSQL, considere aplicar as seguintes precauções:

  • Evite operações grandes de execução prolongada, pois podem aumentar significativamente o tamanho do ficheiro WAL.
  • Use tabelas UNLOGGED ou TEMPORARY durante as operações em lote.
  • Verifique a configuração do WAL e pondere reduzir a frequência dos pontos de verificação. Para mais informações, consulte o artigo Configuração da WAL
  • Verifique se existem operações DELETE grandes e pondere substituí-las por operações TRUNCATE. Isto pode reduzir significativamente os dados dos ficheiros WAL. No entanto, tem de ter cuidado, porque o Datastream não replica as operações TRUNCATE.

O que se segue?