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