2017-10-24 7:06 GMT-05:00 Gustavo Vaccaro <gustavojosevacc...@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;


-- 
Jaime Casanova                      www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Reply via email to