La replica non è riuscita; come riprendere?


10

Sto eseguendo Postgres 9.1.6 su Ubuntu e ho la configurazione della replica in streaming tra un master e uno slave. Tutto ha funzionato senza intoppi fino a quando il database non si è bloccato e abbiamo dovuto riavviare entrambi i box.

Ora, la replica si è fermata e quando si controllano i registri su entrambe le caselle, vedo questo messaggio:

CDT FATAL: il segmento WAL richiesto 0000000100000224000000FA è già stato rimosso

È lo stesso segmento ancora e ancora. Dal mio Google, sembrerebbe che il server di replica stia cercando di recuperare questo segmento dal master, ma non è più lì. Ok, ma come aggirare questo? Devo fare un nuovo backup e risincronizzarlo sullo slave? Esiste un modo semplice per sincronizzare lo slave?

Risposte:


7

Sì, dovrai fornire allo slave un nuovo backup di base (per la replica in streaming solo i passaggi da 1 a 4) del master.

Il tuo problema si è probabilmente verificato perché il valore di wal_keep_segments è troppo basso. Il valore deve essere abbastanza alto che quando lo slave è inattivo per qualche tempo il master non inizierà a riciclare i segmenti che lo slave non ha ancora elaborato.


1

Verificare che i WAL richiesti si trovino nella posizione da cui si esegue il ripristino per il ripristino iniziale prima di collegare lo slave all'host primario in modalità streaming

Il problema può verificarsi quando esiste uno sneaker del segmento WAL nella posizione da cui si sta eseguendo il ripristino per il ripristino iniziale.

Se in questo caso è tutto a posto, è necessario controllare il comando restore_ in recovery.conf.


0

un'altra soluzione è eseguire wal backup_push dal server primario e fare immediatamente un backip_fetch dallo slave di standby e avviare lo standby.


2
Espandi il motivo per cui questo processo funziona
RolandoMySQLDBA l'
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.