Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Solucionar o problema de acúmulo de logs WAL no PostgreSQL

Última atualização: Jun 26, 2026

Os logs WAL (write-ahead logging) acumulam-se quando o processo checkpointer não consegue excluí-los. Isso geralmente ocorre porque um slot de replicação os retém, parâmetros relacionados ao WAL estão definidos com valores muito altos ou operações de escrita sobrecarregam o processo de limpeza. Este tópico aborda como diagnosticar e resolver o acúmulo de logs WAL tanto no banco de dados primário quanto nas instâncias somente leitura.

Informações básicas

O WAL é um componente essencial do PostgreSQL para garantir a segurança dos dados e melhorar a confiabilidade e o desempenho do sistema. Ele ajuda a prevenir a perda de dados e assegura que a restauração ocorra de maneira confiável, mesmo diante de múltiplas falhas.

Acúmulo de logs WAL no banco de dados primário

Slots de replicação inativos ou LSN não reportado

O slot de replicação é uma ferramenta fundamental no PostgreSQL para implementar alta disponibilidade e recuperação de desastres. Ele instrui o PostgreSQL a não excluir logs WAL até que o consumidor os tenha processado. Caso um slot se torne inativo — porque o consumidor parou de reportar seu número de sequência de log (LSN) — os logs WAL associados a esse slot acumulam-se indefinidamente.

Etapa 1: Identificar slots que impedem a exclusão de WAL.

Execute a consulta abaixo na view de sistema pg_replication_slots para verificar quanto de WAL cada slot está retendo:

SELECT slot_name, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_insert_lsn(), restart_lsn)) AS delay_size
FROM pg_replication_slots;

Se o valor de delay_size de um slot for alto ou corresponder ao acúmulo total de WAL observado, é provável que esse slot esteja interrompendo a exclusão.

Etapa 2: Exclua o slot inativo.

Avalie se o slot ainda é necessário com base nos requisitos do seu negócio e, caso não seja, exclua-o:

SELECT pg_drop_replication_slot('<slot_name>');
Aviso

A exclusão de um slot de replicação é permanente. Verifique se o slot está realmente inativo e se não há consumidores downstream antes de prosseguir.

Etapa 3: Confirme a remoção.

Execute novamente a consulta de identificação da etapa 1 para validar que o slot foi removido.

Para mais informações sobre como gerenciar slots de replicação, consulte Usar o recurso de gerenciamento de logs WAL.

Configurações incorretas de parâmetros

Caso wal_keep_segments (PostgreSQL 12 e anteriores), wal_keep_size ou max_wal_size estejam configurados com valores excessivos, o PostgreSQL reterá muito mais WAL do que o necessário. Revise os valores atuais e reduza-os para atender às suas necessidades reais de replicação e recuperação.

Tempestade de VACUUM e alto volume de escrita

Uma tempestade de VACUUM — muitas operações automáticas ou manuais de VACUUM executando simultaneamente — gera um grande volume de logs WAL em curto período. Esse cenário pode elevar a carga de I/O e atrasar a limpeza do WAL. Para mitigar o impacto, ajuste os parâmetros do VACUUM e escalone as execuções para distribuir a carga ao longo do tempo.

Um throughput elevado de escrita produz efeito semelhante. Sempre que possível, agende gravações em massa para horários fora de pico.

Acúmulo de logs WAL em instâncias somente leitura

Latência de replicação

Logs WAL acumulam-se em uma instância somente leitura quando a reprodução fica atrasada. Duas causas comuns são:

  • Transações longas bloqueiam a reprodução. Uma transação demorada na instância somente leitura pode entrar em conflito com a reprodução dos logs WAL. Analise as configurações de hot_standby_feedback e max_standby_streaming_delay. Por exemplo, se hot_standby_feedback estiver off e max_standby_streaming_delay tiver um valor alto, consultas longas na instância somente leitura podem atrasar significativamente a reprodução.

  • Especificações insuficientes na instância somente leitura. Quando a instância somente leitura possui especificações de computação ou armazenamento inferiores às do banco de dados primário, ela pode não acompanhar o fluxo de replicação. Nesse caso, não é possível excluir os logs WAL não reproduzidos. Avalie e selecione especificações adequadas para o banco de dados somente leitura conforme as demandas do seu negócio.

Próximos passos

Caso o acúmulo de logs WAL persista após a conclusão destas etapas, entre em contato com a equipe de suporte técnico do ApsaraDB RDS for PostgreSQL.

Referências

Exclua manualmente slots de replicação inativos para permitir que o AliPG exclua automaticamente os logs WAL. Para mais detalhes, consulte Usar o recurso de gerenciamento de logs WAL.