Configurei um grupo master/slave Postgresql
(13.4) , 1 master e 1 slave, usando o WAL warm standby. (consulte: https://postgresql.org/docs/current/warm-standby.html#STANDBY-SERVER-SETUP )
O escravo saiu de sincronia e não pode se recuperar devido ao WAL não existir mais no mestre, consulte outra pergunta para obter detalhes: Postgresql - recupera o escravo após ficar fora de sincronia com o mestre usando WAL
Agora, estou refazendo o escravo. Existem dados de 3,7 T no mestre e estão aumentando muito rapidamente, cerca de 30 Gb por dia?
Para evitar que o escravo fique fora de sincronia novamente, estou tentando aumentar a retenção do WAL.
Aqui está o que eu pretendo fazer:
max_wal_size = 20Gb
min_wal_size = 10GB
Perguntas:
- A-1 . Os valores dos parâmetros acima são adequados?
- A-2 . Aumentar esses parâmetros tem um efeito colateral ruim?
- A-3 . Só preciso aplicar esses 2 parâmetros para master, certo?
- B. _ Existe mais parâmetro que devo configurar?
- C. _ Qualquer maneira melhor de evitar o escravo fora de sincronia?
Obrigada.
Não, isso não vai ajudar em nada.
Você tem três opções alternativas:
aumentar
wal_keep_size
para um valor grande o suficienteEssa é uma solução simples, mas grosseira, pois faz com que o primário sempre retenha uma certa quantidade de WAL, independentemente de ser demais ou insuficiente (porque o tempo de inatividade é maior do que o esperado).
defina um
restore_command
no, para que ele possa usar o arquivo WAL para recuperar o atrasoEssa pode ser a melhor opção se você tiver um arquivo WAL.
usar um slot de replicação física
Esse objeto marca uma determinada posição no fluxo WAL e impede que o primário descarte o WAL que ainda é necessário para o standby. Embora seja uma solução elegante, há o risco de quebrar o primário se o modo de espera ficar inativo por muito tempo. Consequentemente, é uma boa ideia monitorar a replicação nesse caso e/ou definir
max_slot_wal_keep_size
um limite para a quantidade de WAL retida no primário.