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 23/03/2011 17:45:34

casasniper
Membre

Problème de récupération des fichiers archivés

Je viens de mettre en place la réplication en mode (SR) Streaming replication mais j'ai un problème au niveau de la récupération des fichiers archivés au niveau du serveur Master par le serveur Slave.

J'explique au niveau du serveur Master il exécute bien la commande suivante :
archive_command = 'cp %p /var/lib/pgsql/9.0/data/pg_wal/%f'
pour copier le fichier journal du répertoire /var/lib/pgsql/9.0/data/pg_xlog vers le répertoire en local /var/lib/pgsql/9.0/data/pg_wal que j'ai créé.

Par contre le serveur Slave ne récupère pas les fichiers journaux du Master pour les rejouer (restaurer) avec la commande suivante :
restore_command = 'cp /var/lib/pgsql/9.0/data/pg_wal/%f "%p"'

Même si je prends les fichiers archivés par le master et les mettre dans le répertoire /var/lib/pgsql/9.0/data/pg_wal du Slave en vu de restaurer ces fichiers mais il ne le fait pas.

Voici ce que j'ai dans les logs du serveur Slave :
LOG:  le système de bases de données a été arrيté ـ 2011-03-23 13:34:47 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=57416
LOG:  le système de bases de données a été interrompu ; dernier lancement connu ـ 2011-03-23 14:13:50 CET
LOG:  entre en mode standby
cp: ne peut évaluer `/var/lib/pgsql/9.0/data/pg_wal/000000010000000200000019': Aucun fichier ou répertoire de ce type
LOG:  enregistrement de longueur nulle ـ 2/19000078
cp: ne peut évaluer `/var/lib/pgsql/9.0/data/pg_wal/000000010000000200000019': Aucun fichier ou répertoire de ce type
LOG:  réplication de flux connecté avec succès au serveur principal

Sachant que le fichier 000000010000000200000019 existe sur le master et n'a pas été récupéré par le slave et même après une récupération manuelle de ma part de ce fichier archivé au niveau du master vers le slave, ce dernier n'a pas restaurer le fichier archivé en question.

Autre chose je n'arrive pas à accéder à la dase du serveur slave, j'ai le message d'erreur suivant : FATAL : le système de base de données se lance.
Normalement je ne doit pas avoir ce message parce que d'après la documentation à partir de la version 9.0 on peut accéder à la base du slave en lecture seule.

Merci de m'aider à débloquer cette situation.

Dernière modification par casasniper (23/03/2011 17:56:51)

Hors ligne

#2 23/03/2011 19:07:27

gleu
Administrateur

Re : Problème de récupération des fichiers archivés

Si le maître et l'esclave sont sur des machines différentes, cela ne peut pas fonctionner ainsi, un cp ne permettant pas la copie vers un autre serveur. Il faut utiliser une commande de copie réseau comme scp, rsync, voire lftp. Deux articles pour une mise en place complète : http://www.dalibo.org/glmf131_mise_en_p … resl_9.0_1 et http://www.dalibo.org/glmf131_mise_en_p … resl_9.0_2


Guillaume.

Hors ligne

#3 23/03/2011 19:09:35

Marc Cousin
Membre

Re : Problème de récupération des fichiers archivés

Pour le premier point, l'explication est un peu difficile à suivre:
- comment sont recopiés les fichiers du maître vers l'esclave ?
- Est ce que les droits sur pg_wal ET sur les fichiers contenus dedans sont bons, sur l'esclave ?
- Est ce que le fichier était là au moment où la commande cp a échoué ? c'est très probable que non, et ça serait normal: si le fichier n'est pas encore généré par le maître, l'esclave arrête la récupération en mode fichier (les cp) et passe en mode flux (le message réplication de flux connecté).

Au passage, gleu, faudrait mettre 'ée' à connectée smile

Pour le second point: il faut que hot_standby soit à 'on' pour que la base soit accessible en lecture seule. Il faut aussi qu'elle ait rejoué un certain nombre d'entrées de journaux, afin d'être cohérente. Par ailleurs, le maître envoie régulièrement des entrées à l'esclave pour lui permettre de passer en lecture seule. Tant qu'il n'a pas reçu ces messages, il reste en 'récupération'.


Marc.

Hors ligne

#4 23/03/2011 20:23:04

casasniper
Membre

Re : Problème de récupération des fichiers archivés

Pour passer en hot_standby est ce que cela va surcharger la machine Slave par des connexions provenant du Master pour que le Slave soit quasi identique au Master ou bien le hot_standby et le streaming replication auront la même charge sauf que le hot_standby offre la possibilité de la lecture seule.
C'est quoi vraiment la différence entre ces deux mode au niveau de l'impact sur le serveur Slave ?

Hors ligne

#5 23/03/2011 21:07:42

Marc Cousin
Membre

Re : Problème de récupération des fichiers archivés

hot standby et streaming replication n'ont aucun rapport:
-hot standby c'est la possibilité de faire des requêtes en lecture seule sur l'esclave
-streaming replication, c'est envoyer les journaux au fur et à mesure de leur génération

on peut évidemment utiliser les deux en même temps…

dans les deux cas, la surcharge sur le maître est minime.


Marc.

Hors ligne

#6 25/03/2011 14:45:08

casasniper
Membre

Re : Problème de récupération des fichiers archivés

@gleu
Dans la commande archive_command, il y a un le paramètre "cp" qui permet de faire la copie des fichiers d'archives vers une destination que ce soit en local ou sur un autre serveur, je l'ai testé et ça marche nickel

Hors ligne

Pied de page des forums