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 22/03/2011 19:34:50

casasniper
Membre

Problème de réplication (SR)

Bonjour,
Pour faire la réplication (streaming replication) entre deux bases de données postgresql9.0 sur deux serveurs de 64bits, j'ai configuré le serveur principal et le serveur en attente de la manière suivante :

1) Serveur principal (Master)
Dans le fichier postgresql.conf :
**************************
listen_addresses = '*'
wal_level = archive   
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/9.0/data/pg_wal/%f'
max_wal_senders = 5
wal_keep_segments = 32

Dans le fichier pg_hba.conf :
************************
host      replication      postgres      0.0.0.0 0.0.0.0        trust

Et j'ai configuré aussi le serveur en attente de cette façon :

2) Serveur en attente (Slave)
Dans le fichier recovrey.conf :
*************************
standby_mode = 'on'   
primary_conninfo = 'host=94.23.240.208 port=5432 user=postgres'   
restore_command = 'cp /var/lib/pgsql/9.0/data/pg_wal/%f "%p"'

Après avoir synchronisé les deux répertoires DATA (/var/lib/pgsql/9.0/data/) de postgresql9.0 entre les deux serveurs (Master/Slave) et relancé les services de postgresql9.0, j'ai eu le message suivant dans les logs du serveur en attente par contre les logs du serveur principal montre que tout est OK :

Log du serveur en attente
*********************
FATAL:  l'identifiant du systوme de bases de donnىes diffوre entre le serveur principal
        et le serveur en attente
DةTAIL:  L'identifiant du serveur principal est 5580278574645196799, l'identifiant du serveur en attente
        est 5586543497412834231.
cp: ne peut ىvaluer `/var/lib/pgsql/9.0/data/pg_wal/00000001000000030000009D': Aucun fichier ou rىpertoire de ce type
cp: ne peut ىvaluer `/var/lib/pgsql/9.0/data/pg_wal/00000001000000030000009D': Aucun fichier ou rىpertoire de ce type

Log du serveur principal
********************
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36419
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36420
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36421
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36422
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36423
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36424
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36425
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36426
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36427
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36430
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36431
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36432
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36433
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36434
LOG:  connexion de réplication autorisée : utilisateur=postgres, base de données=192.168.10.2, port=36435

Hors ligne

#2 22/03/2011 20:17:48

Marc Cousin
Membre

Re : Problème de réplication (SR)

Comment avez vous fait cette synchro ?

Le fait que l'identifiant ne soit pas les mêmes entre la base de production et la base de standby laisse supposer que la base de standby n'est pas une copie de la base de production. Ou alors le fichier de contrôle est corrompu, mais cela n'y ressemble pas.


Marc.

Hors ligne

#3 23/03/2011 11:58:37

casasniper
Membre

Re : Problème de réplication (SR)

J'ai synchronisé les deux bases de données avec les commandes suivantes que j'ai lancé au niveau du serveur principal :

/usr/bin/psql -c "SELECT pg_start_backup('label', true)"
rsync -a -v -e ssh /var/lib/pgsql/9.0/data/ 192.168.10.2:/var/lib/pgsql/9.0/data/ --exclude postmaster.pid --exclude postgresql.conf --exclude pg_hba.conf
/usr/bin/psql -c "SELECT pg_stop_backup()"

Après cette synchronisation, j'ai vérifié les deux bases de données et ils étaient identiques

Hors ligne

#4 23/03/2011 12:14:49

Marc Cousin
Membre

Re : Problème de réplication (SR)

Je présume que vous aviez arrêté le service, sur le serveur cible, et supprimé les fichiers ? (je préfère quand même poser la question)

Le problème, de ce que j'en comprends, c'est que d'après PostgreSQL, ce n'est pas la même base que vous essayez de démarrer en récupération que la base du serveur de production.


Marc.

Hors ligne

#5 23/03/2011 12:27:58

casasniper
Membre

Re : Problème de réplication (SR)

Non je n'ai rien supprimé comme fichiers

Hors ligne

#6 23/03/2011 12:29:44

Marc Cousin
Membre

Re : Problème de réplication (SR)

Recommencez alors, en supprimant les fichiers de destination (du répertoire data). Et après avoir éteint le service.


Marc.

Hors ligne

#7 23/03/2011 14:01:46

casasniper
Membre

Re : Problème de réplication (SR)

Effectivement, il fallait vider le répertoire DATA de postgreSQL du serveur en attente (Slave) avant de faire la synchronisation des deux répertoires DATA entre le serveur principal et le serveur en attente
Maintenant j'ai plus le message d'erreur concernant les identifiant des deux bases de données.

Je te montre aussi les logs des deux serveurs :
Serveur principal (Master)
**********************
LOG:  le système de base de données est arrêté
LOG:  le système de bases de donnىes a ىtى arrيtى ـ 2011-03-23 12:08:44 CET
LOG:  lancement du processus autovacuum
LOG:  le système de bases de donnىes est prيt pour accepter les connexions
LOG:  connexion de réplication autorisىe : utilisateur=postgres, base de données=192.168.10.2, port=45385

Serveur en attente (Slave)
**********************
LOG:  le système de bases de données est prêt pour accepter les connexions
LOG:  le système de bases de données a été interrompu ; dernier lancement connu ـ 2011-03-23 12:10:07 CET
LOG:  entre en mode standby
cp: ne peut évaluer `/var/lib/pgsql/9.0/data/pg_wal/000000010000000200000015': Aucun fichier ou répertoire de ce type
LOG:  enregistrement de longueur nulle ـ 2/15000078
cp: ne peut évaluer `/var/lib/pgsql/9.0/data/pg_wal/000000010000000200000015': Aucun fichier ou répertoire de ce type
LOG:  réplication de flux connecté avec succès au serveur principal
LOG:  la ré-exécution commence ـ 2/15000078
LOG:  état de restauration cohérent atteint ـ 2/16000000

Merci Bcp

Hors ligne

#8 05/04/2012 11:53:16

younporek
Membre

Re : Problème de réplication (SR)

Bonjour
J'essaye de mettre en place une replication (postgresql 8.4 avec slony : un master et un slave) mais après ajout de la table dans l'ensemble de replication, il m'affiche: ERREUR : la relation "nom de mon cluster".sl_trigger n'existe pas
LINE 2: FROM "nom de mon cluster".sl_trigger. Quelqu'un saurait il la solution??

Hors ligne

#9 05/04/2012 14:53:51

younporek
Membre

Re : Problème de réplication (SR)

Ce problème était du au fait que je n'avais pas lancer les daemons slon.Merci

Hors ligne

#10 18/04/2012 15:19:52

Alan2007
Membre

Re : Problème de réplication (SR)

je n'ai rien supprimé comme fichiersg.gif

Hors ligne

Pied de page des forums