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 29/06/2009 11:16:00

pascal76
Membre

Archivage wal dans 2 répertoires

Bonjour,
Pouvez vous me dire comment paramétrer archive_command du fichier postgresql.conf de façon à archiver mes logs à la fois sur le serveur ou se trouve la base de données et également sur un autre serveur de backup
pour les copier sur un autre serveur, cela fonctionne deja avec la commande suivante :
archive_command = 'scp "%p" postgres@servername:/backup/resto/PGWAL/servername/"%f" '

comment lui dire de copier les fichiers wal également sur un répertoire de la machine source ?
j'espère que j'ai été assez explicite
merci de votre réponse.

Hors ligne

#2 29/06/2009 11:32:31

Marc Cousin
Membre

Re : Archivage wal dans 2 répertoires

Soit faire un script shell, soit simplement (si on est bien sous unix) faire quelque chose comme :
archive_command = 'scp "%p" postgres@servername:/backup/resto/PGWAL/servername/"%f" && scp "%p" postgres@servername2:/backup/resto/PGWAL/servername/"%f" '

Comme cela les commandes sont exécutées l'une après l'autre, et la commande ne retourne OK que si les 2 réussissent (séparateur &&, si la première échoue, la seconde n'est même pas essayée).


Marc.

Hors ligne

#3 29/06/2009 11:38:36

Remigio
Membre

Re : Archivage wal dans 2 répertoires

Dans une logique de centralisation des backup, il me semble préférable de gérer la sauvegarde via un outil tiers.

Moi j'utilise backup manager pour faire mes dumps quotidien et sauvegarder les logs etc sur un ftp distant.

Hors ligne

#4 29/06/2009 11:50:36

Marc Cousin
Membre

Re : Archivage wal dans 2 répertoires

Oups, je n'ai pas fait attention à 'vers un répertoire de la machine source'. Le principe reste le même :

archive_command = 'cp %p /tmp/%f && scp "%p" postgres@servername:/backup/resto/PGWAL/servername/"%f" ' par exemple, pour mettre les fichiers dans le /tmp (mauvaise idée, mais ce n'est qu'un exemple)


Marc.

Hors ligne

#5 30/06/2009 10:22:54

pascal76
Membre

Re : Archivage wal dans 2 répertoires

Merci beaucoup.
J'ai appliqué votre solution. impeccable, les journaux sont copiés sur les deux serveurs.

Hors ligne

#6 30/06/2009 10:51:27

pascal76
Membre

Re : Archivage wal dans 2 répertoires

Dans le même registre,

- comment expliquer le fait que le nombre de fichiers wal dans le répertoire pg_xlog est différent selon mes serveurs ?

Hors ligne

#7 30/06/2009 11:17:23

pascal76
Membre

Re : Archivage wal dans 2 répertoires

- Il semble également que

dans archive_comande , si il n'y a pas le cp %p /backup/pgxlog/%f   (c'est a dire la copie dans un autre répertoire du serveur source) mais uniquement le SCP %p........... , le répertoire archive_status n'est pas actualisé avec les xxxxxxxxxxxxxxx.done

confirmez vous cela ?
Merci d'avance.

Hors ligne

#8 30/06/2009 11:33:47

Marc Cousin
Membre

Re : Archivage wal dans 2 répertoires

* comment expliquer le fait que le nombre de fichiers wal dans le répertoire pg_xlog est différent selon mes serveurs ?
Plusieurs explications :
- Le paramètre checkpoint_segments n'est pas le même
- L'archivage est un peu lent (le ménage des fichiers de WAL est fait à chaque checkpoint)
- La base qui a moins de WAL n'a pas encore beaucoup travaillé (et donc pas eu besoin de créer les nouveaux fichiers de WAL)

*Dans archive_comande , si il n'y a pas le cp %p /backup/pgxlog/%f   (c'est a dire la copie dans un autre répertoire du serveur source) mais uniquement le SCP %p........... , le répertoire archive_status n'est pas actualisé avec les xxxxxxxxxxxxxxx.done
Non, pas normal. Cela veut dire que la commande d'archivage a échoué. Regardez dans la log de postgresql, il devrait y avoir des traces sur cet échec.


Marc.

Hors ligne

#9 01/07/2009 09:58:14

pascal76
Membre

Re : Archivage wal dans 2 répertoires

* Non, pas normal. Cela veut dire que la commande d'archivage a échoué. Regardez dans la log de postgresql, il devrait y avoir des traces sur cet échec.

Pas de message je n'ai pas de traces dans le log de postgres sur le sujet
et les fichiers logs d'archive sont bien copiés aux 2 endroits spécifiés dans archive_command  ???

Hors ligne

#10 01/07/2009 10:14:24

gleu
Administrateur

Re : Archivage wal dans 2 répertoires

Qu'est-ce que vous entendez par « le répertoire archive_status n'est pas actualisé avec les xxxxxxxxxxxxxxx.done » ? parce que, une fois renommé en .done, les fichiers sont rapidement supprimés. En fait, le seul intérêt de regarder dans archive_status est de s'assurer que les fichiers .ready ne s'accumulent pas.


Guillaume.

Hors ligne

#11 01/07/2009 11:05:55

pascal76
Membre

Re : Archivage wal dans 2 répertoires

J'entend par là, qu'il n'y a plus de fichiers qui arrivent dans le répertoire archive_status, le dernier date du 25 juin or mes logs arrivent toutes les 30 minutes.

sur mes serveurs, les fichier *.done d'archive_status ne se suppriment pas automatiquement, il faut que je le fasse manuellement (ou par un shell dans le cron ) y'a  une astuce pour que cela se fasse par postgres ?

Hors ligne

#12 01/07/2009 11:09:57

gleu
Administrateur

Re : Archivage wal dans 2 répertoires

PostgreSQL le fait automatiquement, je crois lors du CHECKPOINT.


Guillaume.

Hors ligne

#13 01/07/2009 11:11:26

Marc Cousin
Membre

Re : Archivage wal dans 2 répertoires

Oui, c'est fait à chaque checkpoint, lors du recyclage des WAL : dans le répertoire archive_status, on ne voit que les WAL qui sont présents dans pg_xlog.


Marc.

Hors ligne

#14 01/07/2009 11:14:45

gleu
Administrateur

Re : Archivage wal dans 2 répertoires

Petite précision : on ne voit que les noms des WAL qui sont présents dans pg_xlog ET prêts à être archivés.


Guillaume.

Hors ligne

#15 01/07/2009 11:41:55

Marc Cousin
Membre

Re : Archivage wal dans 2 répertoires

Tsss quel pinailleur smile


Marc.

Hors ligne

#16 01/07/2009 13:13:16

gleu
Administrateur

Re : Archivage wal dans 2 répertoires

Exactement wink


Guillaume.

Hors ligne

#17 02/07/2009 09:44:49

pascal76
Membre

Re : Archivage wal dans 2 répertoires

J'effectué 2 tests :

avec postgresql.conf
archive_command = 'cp %p /backup/pgxlog/%f && scp "%p" postgres@alva-eursidb02:/backup/resto/PGWAL/eursidb01/"%f" '
==> les fichiers logs sont copiés dans les 2 répertoires mais aucun fichier créé dans pg_xlog/archive_status

avec postgresql.conf
archive_command = 'mv %p /backup/pgxlog/%f'        # command to use to archive a logfile segment
==> les  fichiers logs sont copiés dans le répertoire et les fichiers correspondants *********.done sont créé dans pg_xlog/archive_status

????
si quelqu'un a une idée.... .  ou effectuer le même test ....  merci d'avance

Hors ligne

#18 02/07/2009 09:48:51

Marc Cousin
Membre

Re : Archivage wal dans 2 répertoires

Pour commencer : surtout ne pas faire de mv : le fichier origine est CAPITAL pour le bon fonctionnement du moteur. En cas de crash, si le fichier n'est plus là alors que postgresql pense qu'il devrait être là, la base ne redémarrera pas.

Dans le premier cas, il n'y a pas d'entrée du tout dans archive_status, ou ca reste en ready ?


Marc.

Hors ligne

#19 02/07/2009 10:48:53

pascal76
Membre

Re : Archivage wal dans 2 répertoires

dans le premier cas , il n'y a pas d'entrée du tout

Hors ligne

#20 02/07/2009 11:11:00

gleu
Administrateur

Re : Archivage wal dans 2 répertoires

Le mieux serait d'écrire un script qui fait le cp et le scp. Il serait ainsi possible d'ajouter des logs pour ce script.


Guillaume.

Hors ligne

#21 03/07/2009 10:49:12

pascal76
Membre

Re : Archivage wal dans 2 répertoires

oui, ok ,  merci de m'aider
comment récupérer et passer les variables mentionnées dans archive_command  %p et %f dans le shell ?

Hors ligne

#22 03/07/2009 11:49:36

Marc Cousin
Membre

Re : Archivage wal dans 2 répertoires

En archive commande mettre 'mon_script %p %f'
Ensuite suivant le langage de script, récupérer les paramètres.
En shell : $1 et $2
En Perl : $ARGV[0] et $ARGV[1]
etc ...


Marc.

Hors ligne

#23 03/07/2009 11:51:36

gleu
Administrateur

Re : Archivage wal dans 2 répertoires

La configuration :

archive_command = '/chemin/vers/ton/script %p %f'

et le script :

#!/bins/sh
$p=$1
$f=$2

cp $p /backup/pgxlog/$f
scp "$p" postgres@alva-eursidb02:/backup/resto/PGWAL/eursidb01/"$f"

Quelque chose de ce goût-là. Il faut évidemment ajouter le code de retour du programme et des traces si nécessaires.


Guillaume.

Hors ligne

#24 03/07/2009 11:52:29

gleu
Administrateur

Re : Archivage wal dans 2 répertoires

Protéger $p et $f pour le cp serait aussi une bonne idée.


Guillaume.

Hors ligne

#25 07/07/2009 09:45:01

pascal76
Membre

Re : Archivage wal dans 2 répertoires

voici le script  archipg.sh
#!/bin/bash

$p=$1
$f=$2
date=`date +%Y%m%d-%H%M%S` 
echo "archipg.sh"
echo $date
cp "$p" /backup/pgxlog/"$f"
scp "$p" postgres@akf-or09:/backup/resto/PGWAL/akf-pg01/"$f"

voici archive_command
archive_command = '/backup/scripts/archipg.sh "%p" "%f" 1>/backup/scripts/archipg.log 2>&1 '

voici le log
/backup/scripts/archipg.sh: line 3: =pg_xlog/000000030000004900000008: No such file or directory
/backup/scripts/archipg.sh: line 4: =000000030000004900000008: command not found
archipg.sh
20090707-092707
cp: cannot stat `': No such file or directory
: No such file or directory


merci d'avance.

Hors ligne

Pied de page des forums