Hoy en día es fundamental que un sistema este disponible 24/7, esto se logra implementando soluciones de alta disponibilidad, como puede ser streaming replication o logical replication. De este último método está enfocada esta entrada.
Logical replication
La replicación lógica es un método para replicar los cambios de los datos, en función de su identidad (generalmente una primary key). A diferencia de la replicación física, que replica los bloques byte por byte. La replicación lógica replica los cambios de una sola tabla.
Modelo publish and subscribe
Utiliza un modelo de publicación y suscripción con uno o más suscriptores que se suscriben a una o más publicaciones en un nodo slave. Los suscriptores extraen datos de las publicaciones a las que se suscriben y, posteriormente, pueden volver a publicar datos para permitir la replicación en cascada o configuraciones más complejas.
Método logical replication
Para implementar el método logical replication, se comienza realizando un snapshot de los datos en la instancia master (publisher) y se copia a la instancia slave (subscriber). Una vez hecho esto, los cambios en el editor se envían al suscriptor a medida que ocurren en tiempo real. El suscriptor aplica los datos en el mismo orden que el editor, de modo que se garantiza la coherencia transaccional para las publicaciones dentro de una única suscripción. Este método de replicación de datos a veces se denomina replicación transaccional.
Ventajas del método logical replication
- Enviar los cambios incrementales en una sola base de datos o un subconjunto de una base de datos a los suscriptores a medida que ocurren.
- Enviar los cambios incrementales de una sola tabla de una base de datos a los suscriptores en el momento que ocurran.
- Activar triggers para los cambios individuales a medida que llegan al suscriptor.
- Consolidar múltiples bases de datos en una sola (por ejemplo, con fines analíticos).
- Replicar entre diferentes versiones principales de PostgreSQL.
- Replicar entre instancias de PostgreSQL en diferentes plataformas (por ejemplo, de Linux a Windows)
- Dar acceso a datos replicados a diferentes grupos de usuarios.
- Compartir un subconjunto de la base de datos entre varias bases de datos.
- Implementar un sistema de replicación Master – Master.
Conclusión
El método “Logical replication” se implementó en la versión 10 de PostgreSQL. Este método permite enviar los cambios realizados en una tabla a los nodos slaves en tiempo real, a diferencia del método “Streaming replication” que envía todos los cambios realizado en la instancia, es decir, los cambios realizado en cada una de las bases de datos en tiempo real.