PostgreSQL 8.5 9.0 – Replicación mejorada

Para los que no están enterados, Streaming Replication es la nueva gran característica de PostgreSQL 9.0 (ex-8.5), todavía en desarrollo. Estoy muy contento por la noticia, realmente era algo pendiente ver integrado algo de esto en PostgreSQL mismo (ya que hay productos y/o versiones modificadas para hacer esto, pero no es lo mismo que «el original», claro está 🙂 ) y lo hace cada vez más adecuado para evitar (o al menos dejar a uno la opción de) utilizar motores de bases de datos muy buenas pero caras y propietarias (Oracle) o lamentablemente en problemas políticos/de gestión (MySQL).

Básicamente SR permite que exista un proceso «sender»en el master que envíe a procesos «receiver» en el/los nodos secundarios porciones de WAL (Write-Ahead Log), es decir, de transacciones «comiteadas» recientemente. Antes (PostgreSQL 8.4 y anteriores) los WAL se podían archivar a otro nodo una vez se hayan completado 16 MB de transacciones (por defecto), con lo cual si se tenía una BD que «cambie poco», 16 MB podían representar un lapso de tiempo físico importante. A partir de ahora, el lapso de tiempo se reduce a unos pocos segundos de diferencia en el master y la/las réplicas (dependiendo el enlace, la carga del master, etc.), con lo cual es una mejora substancial en las capacidades y posibilidades de PostgreSQL.

Hay que resaltar que por ahora este proceso es asincrónico, y aunque hay usuarios que pueden necesitar replicación sincrónica, cada esquema tiene sus ventajas y desventajas, y sin lugar a dudas esta primera versión de momento atiende muchísimas necesidades.  Combinado con otra de las novedades de 9.0 que es la posibilidad de usar un nodo secundario (recibiendo WALs mediante SR o el método tradicional) como Sólo Lectura (característica llamada «Hot Standby«), 9.0 da un paso muy adelante con respecto a versiones anteriores. 🙂

Para más adelante (y planificado para hacerse, ojo) quedó la opción de Straming Replication sincrónico y obtener más y mejor info del proceso de replicación (lag, estadísticas, etc.). Otro punto flojo, que espero se resuelva mejor (o con un mecanismo estándar), es que uno tiene que scriptear a mano el Failover, es decir, el proceso de recuperación (heartbeat es una herramienta genérica para este tipo de cosas).

Dejo algunos links relacionados con más info y demostraciones:
http://www.depesz.com/index.php/2010/02/01/waiting-for-9-0-streaming-replication/
http://www.depesz.com/index.php/2010/01/08/waiting-for-8-5-hot-standby/

¡Saludos!
Marcelo


Comentarios

3 respuestas a «PostgreSQL 8.5 9.0 – Replicación mejorada»

  1. Hola yo tengo este escenario tengo 3 nodos uno en cada ciudad y un nodo central en otra ciudad quiero grabar el cliente 1 en el nodo uno el cliente 2 en el nodo 2 y luego por replicacion estos 3 nodos envien los datos al nodo central
    se puede hacer esta replicación? podriamos postear algun ejemplo de como lograrlo saludos José

  2. Hola José, sí, se puede hacer una replicación como la que planteás, pero me parece que es más eficiente de manera asincrónica (mediante log shipping).

    Acá tenés la documentación oficial: http://www.postgresql.org/docs/9.1/interactive/high-availability.html

    Te recomiendo, para usarlo como recurso de guía y ayuda, que te sumes al grupo de usuarios PostgreSQL Argentina:

    http://www.arpug.com.ar

    Y/o también a la lista de usuarios PostgreSQL en español:

    http://archives.postgresql.org/pgsql-es-ayuda/

    Saludos

  3. @Marcelo
    Gracias Marcelo revisare la documentación ojala y le entienda al ingles jeje
    y me inscribire en las listas de usuarios gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *