PyReplica LEEME (wiki format):

PyReplica es un replicador asincrnico maestro-esclavo simple para PostgreSQL basado en Python, usando un disparador maestro en plpython, seales, secuencias, y un script cliente en python (influenciado por slony & londiste, pero mucho ms simple y fcil). 

Esta programado en Python, apuntando a ser simple y flexible, permitiendo:
 * Fcil instalacin (simplemente ejecutar un script sql en el servidor, y copiar un script demonio en el cliente, no se requiere compilacin)
 * Fcil administracin (en general no necesita administracin para el uso normal, no es necesario aprender un nuevo conjunto de comandos o marco de trabajo)
 * Fcil adaptacin (manual) (scripts python simple y extensibles, permitiendo filtrar y/o transformar los datos replicados)
 * Eficiencia (bajo impacto de uso de memoria y red, sin polling)

No hace:
 * Fail over automtico
 * Resolucin de conflictos (como un sistema maestro/esclavo, esto no debera suceder)
 * Replicacin de cambios de esquema (los comandos CREATE/ALTER/etc. deben ejecutarse manualmente en todos los servidores, igualmente la tabla replica_log puede ser usada para propagarlos)
 * No hay soporte para objetos grandes (replica basada en el oid podra ser soportada en prximas versiones)

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.
