Trabalhar com arquivos de registros WAL do banco de dados PostgreSQL

O Datastream lê o registro prévio de escrita (WAL) do PostgreSQL para capturar e replicar as alterações de dados no nível da linha das tabelas de origem. O servidor de banco de dados armazena cada alteração de transação em arquivos WAL. É possível configurar parâmetros de retenção, tempo limite e slot de replicação do WAL e otimizar o crescimento do arquivo de registro para evitar alta latência de stream e esgotamento do armazenamento.

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 o PostgreSQL 13 e versões mais recentes) para limitar a quantidade de armazenamento usada pelo slot de replicação. Isso é particularmente 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 uma falha no banco de dados.

  • statement_timeout: defina esse parâmetro como 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 são compatíveis com 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 o banco de dados (é necessário um slot de replicação por stream). 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 do WAL

Para evitar a alta latência dos streams e o rápido crescimento no tamanho dos arquivos de registro do WAL ao replicar dados de uma origem do PostgreSQL, considere aplicar 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 as operações em lote.
  • Verifique a configuração do WAL e considere reduzir a frequência do checkpoint. Para mais informações, consulte Configuração do 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 as operações TRUNCATE.

A seguir