PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Réplication » slony replication 1 maitre 2 esclaves avec des schémas différents help » 21/06/2011 13:48:56

Bonjour

Comme convenu j'ai installé une version slony 2.0.6 
Et je me  suis rendue compte aussi qu'une de mes  bases esclave avait perdu toutes ses contraintes clés etc ... étonnant ....
Donc j'ai rétabli son  schéma
et j'ai enfin pu mettre en place ma réplication à 3 ! Et ça marche ! Yes !!

J'ai eu un souci pour installer slony 2.0.6
En effet sur des environnements redhat le configure de slony  demandait de compiler postgresql avec l'option enable-thread-safety mais ne prenait pas en compte cette nouvelle compilation donc impossible de réaliser uneconfigure de slony sur redhat , j'ai détourné le problème en faisant une  compilation de postgresql avec enable-threéad-safety  sur centos et en récupérant la librairie libpq.so ..
Je ne suis pas très fière de moi mais je n'ai pas trouvé autre chose pour faire aboutir mes installations de slony 2.0.6 sur redhat ...
Mon problème de réplication est résolu , c'est déjà ça !!
Maintenant  il faudrait que je trouve une installation de slony 2.0.6 un peu plus académique pour la suite ....

A suivre ....

#2 Re : Réplication » slony replication 1 maitre 2 esclaves avec des schémas différents help » 16/06/2011 21:10:46

Bonjour,

Merci pour cet exemple que j'ai reporté sur mes environnements et qui fonctionne .. super !
Donc ce n'est peut être pas slony qui est en tort ..

Par contre, malgré tout je ne vois pas où je me suis trompée dans mon environnement réel ..
quelques 130 tables numérotées de 1 à 130  et 30 séquences numérotées de 1 à 30.
De toute façon ma configuration fonctionne déjà entre un maitre et un esclave donc ce ne devrait pas être la numérotation des séquences qui est en cause .
mais j'ai des tables partitionnées qui possèdent des séquences ....
Je vais écouter vos conseils et migrer en slony 2.0.6 et réflèchir éventuellement plus tard aux numérotations.

Encore merci !

#3 Re : Réplication » slony replication 1 maitre 2 esclaves avec des schémas différents help » 10/06/2011 16:05:37

Je vais suivre votre conseil car j'ai l'impression que ce fonctionnement n'est pas normal
- mes étapes

cluster name =replication;
node 1 admin conninfo = 'dbname=bdt host=machine1 user=postgres port=';
        node 2 admin conninfo = 'dbname=bdt host=machine2 user=postgres port=';
        node 3 admin conninfo = 'dbname=bdtr host=machine3 user=postgres port=';
init cluster ( id=1, comment = 'Master Node');

set add table (set id=1, origin=1, id=1, fully qualified name = 'bd.table1', comment='table table1');
....
create set (id=2, origin=1, comment='bdt');
set add table (set id=2, origin=1, id=10001

set add sequence (set id=1, origin=1, id=1,
.......
store node (id=2, comment = 'Slave node ', event node=1);
        store node (id=3, comment = 'Slave node replication', event node=1);
        store path (server = 1, client = 2, conninfo='dbname=bdtrprod host=machine1 user=postgres port=');
        store path (server = 2, client = 1, conninfo='dbname=bdtrprod host=machine2 user=postgres port=');
        store path (server = 1, client = 3, conninfo='dbname=bdtrprod host=machine1 user=postgres port=');
        store path (server = 3, client = 1, conninfo='dbname=bdtrprod host=machine3 user=postgres port=');
        store listen (origin=1, provider = 1, receiver =2);
        store listen (origin=2, provider = 2, receiver =1);
        store listen (origin=1, provider = 1, receiver =3);
        store listen (origin=3, provider = 3, receiver =1);

conf spécifique  du maitre , le reste est en commentaire
pid_file='/var/bd/run/pidreplicationNode1.pid'

cluster_name='replication'

conn_info='dbname=bdt host=machine1 .....
desired_sync_time=60000

conf des esclaves est la même aux chaines de connexion prés.

dans le fichier de démarrage :
CLUSTERS="replication"

prog="bd-slon-3"

CONFIGFILE=$SLHOME/${CLUSTERS}-node${NODENUM}.conf
LOGFILE=$LOGHOME/${CLUSTERS}-node${NODENUM}.log

rien d'exceptionnel ...

#4 Re : Réplication » slony replication 1 maitre 2 esclaves avec des schémas différents help » 10/06/2011 11:57:06

Merci pour votre réponse rapide et pour l'astuce !
En fait, les id dans mon deuxième set  sont différents et donc corrects ; à vrai dire pour mon test , dans le 2 eme set je n'ai qu'une table sans séquence ..
les instructions 'set add sequence' qui font partie du set commun  ne fonctionne que sur un esclave pas sur l'autre .
en effet sur le 2eme esclave, l'erreur de mon premier message est renvoyée.
"select "_replication2".setAddSequence_int(1, 1, '"article"."obs_kobs_seq"', 'table obs_kobs_seq')" PG
RES_FATAL_ERROR ERROR:  Slony-I: setAddSequence_int(): sequence ID 1 has already been assigned
En regardant la doc effectivement les séquences ne doivent être déclarées qu'une fois ..
mais comment dois je faire ?
J'ai l'impression de passer à coté de quelque chose d'essentiel mais quoi ...?
(mes versions postgresql 8.3.8 slony 2.0.2

#5 Réplication » slony replication 1 maitre 2 esclaves avec des schémas différents help » 10/06/2011 10:47:18

IsaBd
Réponses : 9

Bonjour
j'ai une réplication avec 1 maitre 1 esclave ( déclaration des tables et des séquences avec add séquence en particulier  ) cela fonctionne trés bien
Je souhaite rajouter un autre esclave sur le maitre  qui comprendra moins de tables répliquées .
Comment dois je faire ?
- 1 cluster ou 2 clusters sur le maitre (j'ai testé les2 mais j'ai le même problème)
- si j'ai bien compris pour le cas 1 cluster ; faire 2 sets 1 avec la partie commune aux 2 esclaves et  l'autre avec le reste

Mon souci a lieu avec les séquences  quand la synchronisation arrive , j'obtiens l'erreur
"select "_replication2".setAddSequence_int(1, 1, '"article"."obs_kobs_seq"', 'table obs_kobs_seq')" PG
RES_FATAL_ERROR ERROR:  Slony-I: setAddSequence_int(): sequence ID 1 has already been assigned
En regardant la doc effectivement les séquences ne doivent être déclarées qu'une fois ..
mais comment dois je faire ?
J'ai l'impression de passer à coté de quelque chose d'essentiel mais quoi ...?

les différentes étapes que je suis
cas 1 cluster :
déclaration de 3 nœuds
création de 2 sets avec affectation des tables et séquences : set add table et sequence
enregistrement des nœuds 2 et 3 en esclave store node (id=2 ..) et store node (id=3 ..)
les store path
store path (server = 1, client = 2, conninfo=
        store path (server = 2, client = 1,
        store path (server = 1, client = 3,
        store path (server = 3, client = 1,
les store listen
        store listen (origin=1, provider = 1, receiver =2);
        store listen (origin=2, provider = 2, receiver =1);
        store listen (origin=1, provider = 1, receiver =3);
        store listen (origin=3, provider = 3, receiver =1);
les souscriptions
subscribe set (id = 1, provider = 1, receiver = 2, forward = no);
         subscribe set (id = 1, provider = 1, receiver = 3, forward = no);
         subscribe set (id = 2, provider = 1, receiver = 2, forward = no);

Qu'en pensez vous ?

Pied de page des forums

Propulsé par FluxBB