La replicación en streaming fue una de las funcionalidades más importantes que se introdujeron en PostgreSQL en los últimos años. La ides es usar el log de transacciones de PostgreSQL (WAL) para sincronizar un número arbitrario de servicios y replicar los datos dentro de un cluster. En PostgreSQL, la replicación puede hacerse de dos maneras:

  • Sincrónico
  • Asincrónico

Usted puede decidir qué método es más beneficioso acorde a sus necesidades.

Replicación asincrónica en PostgreSQL

En el caso de una falla del servidor y un desastre, es una buena idea tener un servidor standby o réplica del master a mano. Afortunadamente, PostgreSQL ofrece los medios para alcanzar exactamente eso. Los administradores pueden crear réplicas de sólo lectura de un servidor master de una manera sencilla y utilizar dichas replicas para varios propósitos, tales como:

  • Backups continuos
  • Failovers automáticos
  • Escalamiento de tareas de trabajo read-only
  • Alcanzar geo-redundancias

La replicación asincrónica es el método estándar en PostgreSQL y ofrece una manera rápida y confiable de distribuir datos y hacer sus configuraciones más tolerantes a fallos.

La mayor ventaja de la replicación asincrónia es un overhead bajo, simplicidad y rboustez. Como resultado, la replicación asincrónica es la solución ideal para la replicación automática y para redundancias a nivel empresa.

¿Cómo funciona la replicaión asincrónica?

Si está corriendo una replicación asincrónica, los datos pueden arribar al slave DESPUÉS de que la transacción haya sido commiteada en el servidor principal (master). Normalmente existe una pequeña demora en la replicación, lo que puede causar (normalmente) una pérdida de datos menor en el caso de un desastre.

PostgreSQL Replication Asynchronous

En muchos casos, esto está totalmente aceptado porque la replicación asincrónica promete poco overhead y no enlentece el master

Replicación en cascada

En PostgreSQL, la replicación no es sólo posible de master a un solo slave, sino que también existe la alternativa de hacer réplicas a varios slaves o incluso usar los slaves para hacer más slaves (replicación en cascada). La replicación en cascada es útil si está buscando una replicación PostgreSQL geográficamente distribuida.

Un ejemplo

Su Base de Datos principal está en Nueva York, EEUU y se quieren generar réplicas enFrankfurt, Stuttgart, Berlin and Aachen (Alemania). Si todas las réplicas están directamente ligadas al master en Nueva York, los datos serían enviados a través del atlántico cuatro veces. En este caso, la replicación en cascada podría ser una buena alternativa, ya que podría hacer que Frankfurt sea la única réplica directamente ligada al master en Nueva York y que dicha réplica alimente a todas las demás que están dentro de Alemania

Replicación sincrónica en PostgreSQL

Si no está en condiciones de correr el riesgo de perder un solo COMMIT, debería considerarse la replicación sincrónica. En PostgreSQL, se pueden replicar sincrónicamente todos los slaves que se deseen. En dicho caso, un COMMIT es sólo valido si fue confirmado por todos los servidores PostgreSQL utilizados.

La replicación sincrónica asegura la máxima seguridad posible para sus transacciones porque si un server falla no puede ocasionar pérdida de datos.

¿Cómo funciona la replicación sincrónica?

Se asegura que no se pierdan datos.

PostgreSQL Replication Synchronous

Una transacción puede volver sólo si hay una cantidad suficiente de slaves que hayan confirmado la escritura en sus discos

Funcionalidades avanzadas: quorum COMMIT

Con la introducción de PostgreSQL 10.0, incluso los métodos de COMMIT más sofisticados son soportados. Uno de los más notables, es el “quorum commit”

FIRST num_sync (standby_name [, …]) ANY num_sync (standby_name [, …])

La idea es otorgar a desarrolladores y administradores una manera de hilar más fino a la hora de configurar réplicas.

Ayuda profesional

Contáctenos hoy para recibir su oferta personal de Cybertec. Ofrecemos entregas a tiempo, tratamiento profesional y más de 17 años de experiencia en PostgreSQL.

Contáctenos