La versión de logical replication de v10 aún no implementa estrategias de resolución de conflictos, para ello o te esperas a la v11 o usas pglogical que sí lo tiene, a parte de más funcionalidades que con el tiempo pasarán al core de postgresql
El 25 oct. 2017 12:35, "Gustavo Vaccaro" <gustavojosevacc...@gmail.com> escribió: > 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 <gustavojosevacc...@gmail.com> > <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; > > > > > > > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> > Libre > de virus. www.avg.com > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> > <#m_-8306565589034680803_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> >