Buenas.

Os lanzo una consulta a ver si alguien pudiera aportarme algo de ayuda.

Tengo un sistema con un nodo primario, y dos hot_standby, uno con streaming 
síncrono y otro asíncrono. La versión es 9.3.

En los nodos standby se lanzan consultas de solo lectura y aquellas que superan 
el umbral establecido por el parámetro max_standby_archive_delay o 
max_standby_streaming_delay provocan un conflicto de versión de snapshot que 
termina reflejándose en la pg_stat_database_conflicts.

Estos nodos de standby son la HA, por lo tanto, es también un requisito que 
estén actualizados lo antes posible.

Hemos deshabilitado el autovacuum en la primaria para que no replique la 
limpieza de las filas muertas en las standby, por lo tanto, utilizar el 
parámetro hot_standby_feedback creemos que carece de sentido ya que no existe 
tal limpieza. Hemos programado una tarea que realizará un vacuum a las 3 de la 
madrugada.

Los parámetros max_standby_archive_delay o max_standby_streaming_delay podemos 
subirlos a valores altos como 10 minutos, pero siempre tendrás el riesgo de 
que, si una sentencia dura más, tendrás un conflicto. Sin entrar a valorar el 
rendimiento de una consulta de 10 minutos, es solo un ejemplo.

Vemos además un riesgo añadido, el nodo con replicación síncrona tiene el 
parámetro synchronous_commit a on, es decir que la primaria antes de dar el ok 
a la transacción esperará que el dato esté replicado en la standby sincrona. Es 
decir que aumentar el parámetro max_standby_streaming_delay en la standby 
síncrona creemos que puede afectar al rendimiento en la primaria, pues si 
coincide con una consulta en la standby, no se aplicarán los cambios de la 
replicación hasta que la consulta finalice, o expire el tiempo indicado en este 
parámetro, y el cliente vería retrasado el commit de su transacción.

Como bien se indica en la siguiente url: 
https://postgresqlco.nf/doc/en/param/max_standby_streaming_delay/9.3/ 
coincidimos que ambas funciones están enfrentadas entre sí. Un hot_standby 
tendrá muchos conflictos al estar constantemente cambiando su información por 
la replicación continua que se necesita para un sistema HA.

El motivo de mi mensaje es intentar conocer su opinión, si hay algo que me 
equivoque en mi razonamiento, o si creen que podría haber alguna solución.

Muchas gracias.

Un saludo.

Reply via email to