Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
J'ai eu un problème en voulant mettre une réplication logique entre 2 bases PROD->ARCHIVAGE lesquelles sont sur le même serveur.
Et comme je n'ai rien vu dans la doc à ce sujet ; je détaille le truc ici, ça peut servir à d'autres.
Si on fait le "CREATE PUBLICATION .... " sur PROD, puis "CREATE SUBSCRIPTION replication_archivage ..." sur ARCHIVAGE le CREATE SUBSCRIPTION va planter (enfin il va rester locké).
Apparemment, c'est parce que lors du CREATE SUBSCRIPTION , un slot de réplication logique est créé sur la base où il y a la publication, mais le slot ne peut qu'être créé que lorsqu'il n'y a aucune transaction ouverte sur le serveur ; donc la transaction ouverte sur la base abonnée par le CREATE SUBSCRIPTION bloque la création du slot.
Donc la solution c'est de créer le slot manuellement :
Sur la base de publication (après avoir fait son CREATE PUBLICATION)
select * from pg_create_logical_replication_slot('replication_archivage','pgoutput');
Puis, sur la base abonnée :
CREATE SUBSCRIPTION sub_archivage
CONNECTION 'host=127.0.0.1 port=5432 dbname=prod connect_timeout=10'
PUBLICATION replication_archivage
WITH (slot_name='replication_archivage',create_slot=false)
;
Hors ligne
Pages : 1