PyReplica LEEME (wiki format):

PyReplica es otro sistema de replicacin "maestro a multiples esclavos" basado en disparadores para base de datos PostgreSQL.

Esta programado en Python, apuntando a ser simple y flexible, permitiendo:
 * Fcil instalacin
 * Fcil administracin
 * Fcil adaptacin (manual)
 * Eficiencia (bajo impacto de uso de memoria y red)

No hace:
 * Fail over automtico
 * Resolucin de conflictos (como un sistema maestro/esclavo, esto no debera suceder)

Consiste en un disparador plpythonu de registro (py_log_replica) y un script esclavo (pyreplica.py)
El disparador almacena un registro de replicacin (instrucciones de manipulacin de datos INSERT,UPDATE,DELETE sobre las tablas afectadas en la tabla replica_log) y seala con un mensaje NOTIFY a las replicas.
El script esclavo cliente se conecta a ambas bases de datos (maestra y esclava), escucha las seales NOTIFY en la base maestra, y re-ejecuta el registro de replica en la base esclava cuando llega dicha seal. Utiliza secuencias y transacciones para evitar perdida de datos. 

El disparador detecta los cambios y los almacena usando la clave primaria de la base de datos. Por lo cual, si la tabla no tiene clave primaria, no puede ser replicada.

Como usa seales NOTIFY, la replicacin es practicamente instantnea y ms eficiente (sin polling). Si el cliente esta caido y las seales NOTIFY se pierden, cuando el cliente se conecta nuevamanete, automaticamente reejecuta los datos replicados "perdidos".

Mediciones de rendimiento simple muestran que el disparador solo es un 50% ms lento que uno basado en C (como en slony-I), con los beneficios de que puede ser facilmente instalado, portado, mantenido y adaptado. (ver benchmarks.txt)

Ver INSTALAR.txt para el procedimiento de instalacin.
