A Replicação de Streaming do PostgreSQL 9.1 é atualizada após um atraso sem o arquivamento do WAL?

16

Contexto:

Digamos que, enquanto estiver usando o Streaming Replication / Hot Standby em um cluster do Postgres 9.1, um nó em espera será desativado. Ele fica inativo por um dia, durante o qual ocorre muita DML no mestre. O recovery.conf do modo de espera não contém uma entrada 'restore_command' (para restaurar a partir de arquivos de diário WAL), mas contém uma string 'primary_conninfo' (para Replicação de Streaming).

Questão:

Se eu iniciar o modo de espera novamente após um dia de alterações no mestre. Ele "alcançará" (eventualmente entrará em um estado que espelha o mestre) usando apenas a replicação de fluxo? Ou tenho que ativar o arquivamento de arquivos WAL e deixá-lo aplicar os arquivos arquivados durante a interrupção para garantir a moeda?

Verifiquei o documento de replicação de arquivamento / streaming do WAL aqui e ele diz que você não precisa habilitar o arquivamento do WAL e a replicação de streaming, mas não está claro se a recuperação ocorrerá ou não sem o arquivamento do arquivo WAL.

Obrigado!

Zac B
fonte

Respostas:

9

Sim, ele alcançará, usando apenas streaming, se (e somente se) , o número de segmentos WAL gerados desde a última atualização no modo de espera for menor que o valor de wal_keep_segments no postgresql.conf. Isso é abordado nesta seção da documentação: Replicação

Matthew Wood
fonte
2
Esta resposta está correta, mas destaca o problema. Se você passar wal_keep_segments, sua replicação estará inoperante. A configuração da replicação baseada em arquivo não é opcional se você desejar um sistema que sobreviverá a uma longa desconexão do mestre e será recuperado.
Greg Smith
0

no nó em espera, é possível definir restore_command em recovery.conf e copiar os arquivos mestres pg_xlog (que estão ausentes no modo de espera) para a pasta na qual os pontos restore_command. Você pode encontrar facilmente quais arquivos xlog estão faltando iniciando o nó de inicialização e digitando

ps aux | grep postgres

você verá "aguardando 000000020000005200000025" ou algo assim, que informa qual pg_xlog você deve começar a copiar do mestre para o caminho restore_command do modo de espera.

se você ativar o wal_archiving, o arquivo será iniciado a partir do momento em que você configurar.

sftsz
fonte
Entendo que, usando o arquivamento WAL baseado em arquivo e dando ao standby um comando restore_command para carregar arquivos WAL, posso garantir que ele seja atualizado. Essa não é minha pergunta, no entanto; Quero saber se o modo de espera será atualizado se eu usar apenas a replicação de streaming (sem envio de arquivo WAL, apenas o fluxo de replicação, conforme especificado em 'primary_conninfo').
Zac B
não. O postgres não faz isso. você deve copiar os arquivos de log se houver um atraso na sua replicação.
Sftsz 16/01/12
0

Não, configurei uma instância de replicação de streaming e ela ficou fora de sincronia, de alguma forma, não consegui fazê-la funcionar novamente até que eu fiz um manual rsyncdos arquivos do WAL.

xenoterracida
fonte