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

#1 23/09/2008 14:18:35

vincentMoreau
Membre

Problème lié à l'archivage des fichiers WAL

Bonjour,

Nous sommes en PostgreSQL 8.2.3.
Nous archivons nos journaux avec la commande suivante :

archive_command = 'cp "%p" /home10/postgres/archive/"%f"'

Il arrive que le /home10 soit full sur certains de nos serveurs. Nous avons alors constaté que les journaux sont sauvegardés dans le repertoire pg_xlog.

Une fois que l'espace est libre sur le /home10, nous voulons que PostgreSQL copie à nouveau les journaux dans /home10

Malgrès un pg_resetxlog, nous n'arrivons pas à modifier la destination d'archivage des fichiers, Postgres continue à les stocker dans /home5/postgres/pg_xlog

Nous sommes alors obligés de désinstaller complétement Postgres et faire un dump / restore de la base.

Merci d'avance pour votre aide,

Cordialement,
Vincent Moreau
Adeo Services

Hors ligne

#2 23/09/2008 14:37:55

gleu
Administrateur

Re : Problème lié à l'archivage des fichiers WAL

Oula, un pg_resetxlog supprime les logs, il ne les redirige pas.

Les logs sont créés/écrit dans le répertoire pg_xlog. Ils sont ensuite archivés si nécessaire (autrement dit si archive_command est renseigné). Enfin, ils sont supprimés quand PostgreSQL n'en a plus besoin. Il ne faut surtout pas les supprimer manuellement, ce que fait pg_resetxlog.

Si le répertoire d'archivage est rempli, PostgreSQL conserve les journaux de transaction en attendant de pouvoir de nouveau les archiver. Si vous voulez changer le répertoire d'archivage, vous modifiez le paramètre archive_command pour que la copie se fasse ailleurs et vous rechargez la configuration (option reload).


Guillaume.

Hors ligne

#3 24/09/2008 10:02:14

vincentMoreau
Membre

Re : Problème lié à l'archivage des fichiers WAL

Bonjour Guillaume,

Merci pour cette réponse.

En fait, je pense que le problème vient du fait que le process archiver n'est pas lancé :

ps -ef | grep -i post

postgres 24615     1  0 Sep22 ?        00:00:01 /usr/bin/postmaster -p 5432 -D /home4/postgres
postgres 24618 24615  0 Sep22 ?        00:00:04 postgres: logger process                     
postgres 24620 24615  0 Sep22 ?        00:00:45 postgres: writer process                     
postgres 24622 24615  0 Sep22 ?        00:00:00 postgres: stats collector process             

J'ai vérifié le fichier postgresql.conf, j'ai bien la ligne

archive_command = 'cp "%p" /home10/postgres/archive/"%f"'

Comment peut on lancer ce process ?

Cordialement,
Vincent

Hors ligne

#4 24/09/2008 10:25:50

gleu
Administrateur

Re : Problème lié à l'archivage des fichiers WAL

Bonjour,

Le processus d'archivage n'est pas lancé en permanence. Et en fait, il n'y a pas réellement de processus d'archivage. Lorsqu'un journal de transaction (WAL) est terminé, PostgreSQL lance la commande donnée par le paramètre archive_command. Si cette commande renvoie le code retour 0, il suppose que la commande s'est bien terminée et flag ce fichier comme étant prêt à être ré-utilisé. Si la commande renvoie n'importe quel autre code de retour, PostgreSQL attend un peu et relance un peu plus tard la commande d'archivage.

Pour savoir si l'archivage se passe bien, vérifiez les journaux applicatifs (traces) de PostgreSQL.


Guillaume.

Hors ligne

#5 24/09/2008 11:40:05

vincentMoreau
Membre

Re : Problème lié à l'archivage des fichiers WAL

Effectivement, j'avais les erreurs suivantes dans mon log :

2008-09-24 00:12:58 CEST [7633] FATAL:  could not open archive status directory "pg_xlog/archive_status": No such file or directory
2008-09-24 00:12:58 CEST [24615] LOG:  archiver process (PID 7633) exited with exit code 1

j'ai donc recréé le repertoire archive_status et tout est rentré dans l'ordre !

Encore une fois, un grand merci pour votre expertise

Cordialement,
Vincent

Hors ligne

#6 24/09/2008 12:06:04

gleu
Administrateur

Re : Problème lié à l'archivage des fichiers WAL

Ça paraît logique. Le répertoire archive_status est un répertoire où PostgreSQL enregistre des fichiers vides dont le nom indique le journal de transactions disponible prêt pour être archivé. Donc, sans ce répertoire, le processus chargé de lancer la commande d'archivage ne voyait aucun journal à archiver. Les journaux se sont donc entassés dans pg_xlog et l'archivage ne fonctionnait pas.

Content que votre problème soit résolu.


Guillaume.

Hors ligne

Pied de page des forums