Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
Non je n'ai rien supprimé comme fichiers
Hors ligne
Recommencez alors, en supprimant les fichiers de destination (du répertoire data). Et après avoir éteint le service.
Marc.
Hors ligne
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
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
Ce problème était du au fait que je n'avais pas lancer les daemons slon.Merci
Hors ligne
je n'ai rien supprimé comme fichiers
Hors ligne
Pages : 1