[pyar] [Django] syncronización entre "instancias" de una aplicación

Mariano Reingart reingart en gmail.com
Vie Jun 4 23:28:37 ART 2010


2010/6/4 Claudio Freire <klaussfreire en gmail.com>:
>
>
> 2010/6/4 Nicolas Echaniz <nico en rakar.com>
>>
>> Para un proyecto en el que estoy empezando a trabajar, una de las
>> necesidades
>> es que si tengo la aplicación instalada en diferentes servidores, todas
>> esas
>> "instancias" puedan sincronizar su información (no hace falta que sea
>> real-
>> time).
>>
>> Estoy leyendo sobre multi-master replication con Postgres y Mysql, pero
>> tiro
>> el tema por acá para saber si alguien se encontró con una situación
>> similar y
>> cómo lo encararon.
>
> Replicación, sea multi-master o de cualquier otro tipo, en postgres está
> bastante verde.

Depende de la definición de verde.
Hay varias soluciones, y en la próxima versión 9.0 ya viene
incorporado en el core...

> master-slave he probado Slony, y aunque es medio un dolor de cabeza de
> administrar, funciona muy bien.

Si es un poco difícil de administrar (pero está integrado a PgAdmin3...)
Igualmente por eso nació PyReplica, que está hecho en python, tiene
una estructura similar y es muy fácil de instalar y configurar (un
disparador y un demonio):

http://www.sistemasagiles.com.ar/trac/wiki/PyReplicaEs

> multi-master he visto un par de soluciones ad-hoc (tipo tener un daemon
> comparando las bases y sincronizando tipo rsync), y el único otro que
> conozco que soporte multi-master en postgres es pgcluster. Sin embargo,
> pgcluster se ve muy abandonado (
> http://pgcluster.projects.postgresql.org/feature.html ). No me inspira
> ninguna confianza.

Pero salió CyberCluster 2.0 que es la continuación mucho mas
actualizada, incluso con soporte pago (master/multislave por ahora)...

Hay herramientas similares de EnterpriseDB y CommandPrompt.

También se puede usar PyReplica para multimaster sincrónico (incluye
un conector sincrónico multimaster en dos fases) para hacer
sincronización directamente desde python, simplemente reemplazando a
psycopg2.

> Luego tenés SQLRelay y pgpool. SQLRelay tiene unas cuantas falencias, pero
> es muy flexible, y es bastante fácil parchar lo que no te funcione (yo lo he
> hecho). pgpool... lo he mirado pero no mucho.

PgPool2 es bastante fácil siempre que se tenga algunos recaudos (como
no usar campos timestamp, cuidado con las secuencias, etc., y no
exigirlo demasiado)...

> Ambos son un middleware que toma las consultas de tus aplicaciones y las
> analizan: si selects (sólo lectura), las tiran a una instancia cualquiera
> (load balancing), si son de escritura (el resto) las tiran a un "master"
> (modo master-slave) o a todas las instancias (modo multi-master síncrono).
>
> Multi-master asíncrono para postgres tengo entendido que hay sólo soluciones
> pagas, que nunca he probado.
>

También se puede usar PyReplica para multimaster async,
controlando/evitando los conflictos por separado.

Como es un proyecto local, hay soporte en español, aparte es muy
simple y fácil de modificar/extender ;-)

Sds

Mariano Reingart
http://www.arpug.com.ar
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com



More information about the pyar mailing list