Trabalhar com arquivos de registros WAL do banco de dados PostgreSQL

O Datastream usa o registro de transações WAL (Write Ahead Log) do PostgreSQL para ler streams do PostgreSQL. O registro é armazenado em arquivos WAL no servidor de banco de dados. Cada registro no registro do WAL representa uma única mudança nos dados reais em uma das tabelas do banco de dados.

Definir parâmetros de configuração para arquivos WAL do PostgreSQL

Recomendamos que você aplique as seguintes configurações ao seu banco de dados PostgreSQL:

  • max_slot_wal_keep_size: defina esse parâmetro (disponível apenas para PostgreSQL 13 e versões mais recentes) para limitar a quantidade de armazenamento usada pelo slot de replicação. Isso é especialmente importante para transações de longa duração, que, em casos extremos, podem fazer com que o tamanho do arquivo WAL ocupe todo o armazenamento e cause falha no banco de dados.

  • statement_timeout: defina esse parâmetro com um valor selecionado para reduzir a latência causada por transações de longa duração. Também é possível usar statement_timeout como uma medida de precaução alternativa para bancos de dados que não oferecem suporte a max_slot_wal_keep_size.

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

Se você planeja criar mais de 10 streams ou se o número de slots de replicação lógica usados por outros recursos, além do número de streams planejados, exceder 10, modifique os seguintes parâmetros:

  • max_replication_slots: aumente o valor desse parâmetro, dependendo do número de slots de replicação definidos para seu banco de dados. Você precisa de um slot de replicação por fluxo. Só é possível definir max_replication_slots na inicialização do servidor.

  • max_wal_senders: aumente o valor desse parâmetro para que ele seja maior que o valor do parâmetro max_replication_slots. Só é possível definir max_wal_senders ao iniciar o servidor.

Otimizar arquivos de registro WAL

Para evitar alta latência dos seus fluxos e crescimento rápido no tamanho dos arquivos de registro WAL ao replicar dados de uma fonte do PostgreSQL, aplique as seguintes precauções:

  • Evite operações grandes e de longa duração, porque elas podem aumentar significativamente o tamanho do arquivo WAL.
  • Use tabelas UNLOGGED ou TEMPORARY durante operações em lote.
  • Verifique a configuração do WAL e considere reduzir a frequência do ponto de verificação. Para mais informações, consulte Configuração de WAL.
  • Verifique se há operações DELETE grandes e considere substituí-las por operações TRUNCATE. Isso pode reduzir significativamente os dados do arquivo WAL. No entanto, é preciso ter cuidado, porque o Datastream não replica operações TRUNCATE.

A seguir