PostgreSQL 9.1 Streaming Replication raggiunge dopo un ritardo senza l'archiviazione WAL?


16

Contesto:

Diciamo che, durante l'utilizzo di Streaming Replication / Hot Standby su un cluster Postgres 9.1, un nodo di standby scende. Rimane inattivo per un giorno, durante il quale si verifica un sacco di DML sul master. Recovery.conf dello standby non contiene una voce 'restore_command' (per il ripristino da file journal WAL), ma contiene una stringa 'primary_conninfo' (per la replica in streaming).

Domanda:

Se ricomincio lo standby dopo un giorno di modifiche sul master. Sarà "recuperato" (alla fine entrerà in uno stato che rispecchia il master) usando solo Streaming Replication? O devo abilitare l'archiviazione dei file WAL e lasciarlo applicare i file archiviati durante l'interruzione per garantire la valuta?

Ho controllato il documento di replica di archiviazione / streaming WAL qui e dice che non è necessario abilitare sia l'archiviazione WAL sia la replica streaming, ma non è chiaro se il recupero accadrà o meno senza l'archiviazione dei file WAL abilitata.

Grazie!

Risposte:


9

Sì, recupererà, usando solo lo streaming, se (e solo se) , il numero di segmenti WAL generati dall'ultimo aggiornamento in standby è inferiore al valore di wal_keep_segments in postgresql.conf. Questo è trattato in questa sezione della documentazione: replica


2
Questa risposta è corretta, ma evidenzia il problema. Se passi mai wal_keep_segments, la tua replica è morta. L'impostazione della replica basata su file non è facoltativa se si desidera un sistema che sopravviva a una lunga disconnessione dal master e si riavvii.
Greg Smith,

0

sul nodo di standby, è possibile impostare restore_command su recovery.conf e quindi copiare i file pg_xlog dei master (che mancano in standby) nella cartella che indica restore_command. Puoi facilmente trovare quali file xlog mancano avviando il nodo di avvio e digitando

ps aux | grep postgres

vedrai lì "in attesa di 000000020000005200000025" o qualcosa del genere, che ti dice quale pg_xlog dovresti iniziare a copiare dal master al percorso restore_command di standby.

se abiliti wal_archiving, verrà avviato l'archivio dal momento della configurazione.


Comprendo che utilizzando l'archiviazione WAL basata su file e dando un comando restore_ di standby per caricare i file WAL, posso assicurarmi che riesca a recuperare. Questa non è la mia domanda, comunque; Voglio sapere se lo standby raggiungerà o meno se utilizzo solo la replica in streaming (nessuna spedizione di file WAL, solo il flusso di replica come specificato in "primary_conninfo").
Zac B

no. Postgres non lo fa. è necessario copiare i file di registro in caso di ritardo nella replica.
sftsz,

0

No, ho impostato un'istanza di replica streaming e in qualche modo non è stata sincronizzata, non sono stato in grado di farlo funzionare di nuovo fino a quando non ho fatto un manuale rsyncdegli archivi WAL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.