¿PostgreSQL 9.1 Streaming Replication se pone al día después de un retraso sin el archivo WAL?

16

Contexto:

Digamos que, mientras se usa Streaming Replication / Hot Standby en un clúster de Postgres 9.1, un nodo en espera se cae. Permanece inactivo durante un día, durante el cual se produce una gran cantidad de DML en el maestro. Recovery.conf del standby no contiene una entrada 'restore_command' (para restaurar desde archivos de diario WAL), pero contiene una cadena 'primary_conninfo' (para Streaming Replication).

Pregunta:

Si vuelvo a iniciar el modo de espera después de un día de cambios en el maestro. ¿Se "pondrá al día" (eventualmente entrará en un estado que refleja el maestro) usando solo la replicación de transmisión? ¿O tengo que habilitar el archivo de archivos WAL y dejar que aplique los archivos archivados durante la interrupción para garantizar la vigencia?

He comprobado el documento de replicación de archivo / transmisión WAL aquí , y dice que no tiene que habilitar tanto el archivo WAL como la replicación de transmisión, pero no está claro si la recuperación se realizará o no sin el archivo WAL habilitado.

¡Gracias!

Zac B
fuente

Respuestas:

9

Sí, se pondrá al día, usando solo transmisión, si (y solo si) , el número de segmentos WAL generados desde la última actualización en el modo de espera es menor que el valor de wal_keep_segments en postgresql.conf. Esto está cubierto en esta sección de la documentación: Replicación

Matthew Wood
fuente
2
Esta respuesta es correcta, pero resalta el problema. Si alguna vez pasa wal_keep_segments, su replicación está muerta. La configuración de la replicación basada en archivos no es opcional si desea un sistema que sobreviva a una larga desconexión del maestro y se recupere.
Greg Smith
0

en el nodo en espera, puede establecer restore_command en recovery.conf y luego copiar los archivos maestros pg_xlog (que faltan en standby) en la carpeta que restaura los puntos de comando. Puede encontrar fácilmente qué archivos xlog faltan iniciando el nodo de inicio y escribiendo

ps aux | grep postgres

verá allí "esperando 000000020000005200000025" o algo así, que le indica qué pg_xlog debe comenzar a copiar desde el maestro a la ruta de restauración del comando standby.

si habilita wal_archiving, comenzará a archivarse desde el momento en que lo configure.

sftsz
fuente
Entiendo que al usar el archivo WAL basado en archivos y al darle al modo de espera un comando restore_command para cargar archivos WAL, puedo asegurarme de que se ponga al día. Sin embargo, esa no es mi pregunta; Quiero saber si el modo de espera se pondrá al día si uso solo la replicación de transmisión (sin envío de archivos WAL, solo la transmisión de replicación como se especifica en 'primary_conninfo').
Zac B
No. postgres no hace eso. debe copiar los archivos de registro si hay un retraso en su replicación.
sftsz
0

No, configuré una instancia de replicación de transmisión y, de alguna manera, no se sincronizó, no pude volver a hacerlo funcionar hasta que hice un manual rsyncde los archivos de WAL.

xenoterracida
fuente