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

#1 14/01/2011 12:45:59

lusitano
Membre

Backup PostgreSQL - Tache cron

Bonjour tout le monde,

Je suis nouveau sur ce forum.

Et je suis coincé... j'ai un script de backup monscript.sh :

#!/bin/bash
export PGPASSWORD="pwd"
pg_dump -U user -v db | bzip2 -c > /data/backup/db.sql.dump.bz2

Si je lance le script à la main,

# ./monscript.sh

tout se passe bien !

Maintenant je l'ajoute à ma crontab, il démarre mais ne fait rien à part créer le fichier : db.sql.dump.bz2 vide

Quelqu'un aurait une idée ?

Merci d'avance

Dernière modification par lusitano (17/01/2011 09:49:44)

Hors ligne

#2 14/01/2011 13:04:01

gleu
Administrateur

Re : Backup PostgreSQL - Tache cron

Pas de droit de connexion à la base ? que dit le log de PostgreSQL ?


Guillaume.

Hors ligne

#3 14/01/2011 14:15:32

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

Non je pense pas...

Voici ce que dit le log

2011-01-14 13:00:01 CET LOG:  unexpected EOF on client connection

Hors ligne

#4 14/01/2011 14:50:38

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

Je tiens à préciser que le script marche si je l'exécute manuellement...

Merci d'avance pour vos réspone smile

Hors ligne

#5 14/01/2011 15:22:45

gleu
Administrateur

Re : Backup PostgreSQL - Tache cron

Oui, mais l'utilisateur qui exécute le script par cron peut être différent de votre utilisateur. Du coup, la connexion peut très bien ne pas se faire.

Pour avancer su votre soucis, il faut essayer de récupérer les messages d'erreur de pg_dump ou de bzip2. Séparer les deux commandes, faire des echo pour réussir à le débugger.


Guillaume.

Hors ligne

#6 14/01/2011 15:42:29

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

Le log cron :

Jan 14 14:20:01 ECHL0-1PREPROD01 /USR/SBIN/CRON[32617]: (root) CMD (   /tools/backup.sh)

c'est root qui exécute le script (/etc/crontab)

et j'exécute manuellement mon script en root

j'ai mon log postgres qui me retourne uniquement l'erreur : unexpected EOF on client connection

Merci pour gleu ton aide !

Hors ligne

#7 14/01/2011 15:45:59

Marc Cousin
Membre

Re : Backup PostgreSQL - Tache cron

Il pourrait être intéressant de rajouter un set -x au début du script. Cela permet de tracer les commandes. On peut avoir des surprises (comme pg_dump pas dans le path par exemple).


Marc.

Hors ligne

#8 14/01/2011 16:13:52

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

Merci pour la réponse mais je comprend pas ce que tu me propose... peux tu être un peu plus précis?

Hors ligne

#9 14/01/2011 16:16:46

Marc Cousin
Membre

Re : Backup PostgreSQL - Tache cron

#!/bin/bash
set -x
export PGPASSWORD="pwd"
pg_dump -U user -v db | bzip2 -c > /data/backup/db.sql.dump.bz2

Pour un script aussi simple, ça ne sert pas 'énormément', mais ça permet de tracer ce qui est fait en détail dans un script. On sera au moins sûr que pg_dump et bzip2 sont correctement exécutés.

Dernière modification par Marc Cousin (14/01/2011 16:18:14)


Marc.

Hors ligne

#10 17/01/2011 09:48:41

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

aucun changement au niveau des logs...
postgres:
2011-01-14 15:20:02 CET LOG:  unexpected EOF on client connection

je comprend pas...

Hors ligne

#11 17/01/2011 12:29:17

Marc Cousin
Membre

Re : Backup PostgreSQL - Tache cron

Normal, le set -x ne change pas la log postgres. Elle change la sortie du script, en la rendant plus détaillée. Encore faut il que vous receviez le résultat du script, tel qu'exécuté par cron.

Redirigez donc la sortie du script vers un fichier, dans l'entrée cron… par exemple :

0 12 * * * monscript.sh >> /tmp/log_mon_script 2>&1

Vous aurez la sortie du script dans le fichier /tmp_log_mon_script


Marc.

Hors ligne

#12 17/01/2011 14:52:42

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

Merci pour ton astuce!
le fait d'avoir redirigé la sortie du script, a réveillé script ...?
je comprend pas...
tu as une explication?
Surtout qu'il n'y avait pas de raison que le script ne fonctionne pas....?

Dernière modification par lusitano (17/01/2011 14:53:22)

Hors ligne

#13 17/01/2011 15:16:34

Marc Cousin
Membre

Re : Backup PostgreSQL - Tache cron

La redirection a fait marcher le script ? j'en doute fortement


Marc.

Hors ligne

#14 17/01/2011 15:55:43

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

J'ai rien fait d'autre... mon script est comme au début de la discussion et j'ai juste rajouté : >> /tmp/log_mon_script 2>&1     à la fin de la ligne concernant mon script

hmm

Dernière modification par lusitano (17/01/2011 16:25:16)

Hors ligne

#15 18/01/2011 15:26:49

peyo
Membre

Re : Backup PostgreSQL - Tache cron

essaye avec

su postgres -c "/usr/lib/postgresql/8.3/bin/pg_dump -U user -v db | bzip2 -c > /data/backup/db.sql.dump.bz2"

avec le path de ta version de pg vers pg_dump, pas sur que les environnements soient chargés dans cron.

C'est mieux également je pense de l'exécuter en tant que user postgres.

Hors ligne

#16 19/01/2011 09:49:16

lusitano
Membre

Re : Backup PostgreSQL - Tache cron

Merci peyo pour ta proposition!

Mais je confirme, le fait de redirigé la sortie du script fait que le dump fonctionne parfaitement...?

0  4    * * *   root    /local/tools/monsrcipt_backup.sh >> /tmp/log_mon_script 2>&1

Merci !

Hors ligne

Pied de page des forums