Jaime,

gracias por tus comentarios.

Hice tantas pruebas que no me di cuenta que estaba trabajando con una vista.

Saludos


Gustavo J. Vaccaro

http://www.gjv.com.ar

El 25/10/2017 a las 4:09, Jaime Casanova escribió:
2017-10-24 7:06 GMT-05:00 Gustavo Vaccaro <gustavojosevaccaro@gmail.com>:
Hola,

ayer hice una simulacion de replicacion con Postgres 10.
Instale dos server (virtuales) con sus respectivos postgres, a uno le puse una base de datos con datos cargados y a la otra solo la
estructura (sin datos).
Hice todos los pasos para crear la replicacion (publicacion y suscripcion) y funciono perfecto.
Me asombro lo facil que es y lo bien que funciona.

que bueno que opines eso, se lo haré saber a mis compañeros de
2ndQuadrant que desarrollaron esta característica

Todos los cambios son replicados sin problemas hasta que force un conflicto.
Di de alta un registro en la base de datos que tiene la suscripcion y despues lo di de alta en la publicacion.
El log me indica que la llave ya existe (el registro existe) y por lo tanto se detiene la replicacion.

Mis preguntas son:

1) ¿Tengo alguna funcion o consulta que me permita detectar los conflictos sin mirar el log?

no, la replicación lógica no pretende permitir escrituras en el origen
y en la réplica. para eso existe BDR que provee replicación
bi-direccional y resolución de conflictos

2) ¿Como hago para que continue la replicacion?
    La respuesta simple es eliminar el registro que de la suscripcion.
    Pero queria ver si se podia saltear la instruccion o algo parecido.
    Encontre esta funcion pg_replication_origin_advance(node_name text, lsn pg_lsn) pero no se como pasar el parametro lsn.
    Probe con este formato pg_replication_origin_status('tdf'::text, '0/31CFECD8'::pg_lsn) y me tira el error
    "no existe la función pg_replication_origin_status(text, pg_lsn)"

eso es porque pg_replication_origin_status es una vista, no una función. prueba:
select * from pg_replication_origin_status;




Libre de virus. www.avg.com