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

#1 31/08/2011 12:32:01

fifth
Membre

Comment connaitre la date de la 1ere et derniere transaction dans WAL

Bonjour,
pour effectuer une restauration en PITR, je souhaite savoir comment connaitre la date et l'heure de la premiere et de la derniere transaction dans un WAL.
ainsi je saurai jusqu'à quel WAL il faut que je restaure. Cela m'éviterai d'avoir à restaurer inutilement tous les WAL archivés depuis mon backup ...
Merci d'avance
Jean

Hors ligne

#2 31/08/2011 12:42:10

daamien
damien clochard

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

Il faut utiliser le paramètre recovery_target_time dans recovery.conf

Plus d'infos :

http://www.postgresql.org/docs/9.0/stat … tings.html
http://www.dalibo.org/glmf108_postgresq … tions#pitr (partie Restauration partielle)

Hors ligne

#3 31/08/2011 13:55:39

fifth
Membre

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

j'ai du mal poser ma question,
mon archive commande envoie les WAL sur un système de sauvegarde externe.

Lors d'une restauration je voudrais pouvoir déterminer la liste des WAL a mettre a disposition de la restaure commande pour ne pas restaurer inutilement des WAL qui ne seront pas utiles lors de la restauration PITR. Pour des raisons complexes je ne peux pas directement demande a la restaure commande de récupérer les WAL sur le système de sauvegarde externe. Il me faut donc pouvoir connaitre le datetime de la derniere transaction comprise dans un WAL. Cela est-t-il possible ?
Jean

Hors ligne

#4 31/08/2011 13:57:17

gleu
Administrateur

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

Certainement, mais aucun outil ne le fait à ma connaissance. Il faudra donc que vous le codiez.


Guillaume.

Hors ligne

#5 31/08/2011 14:21:09

daamien
damien clochard

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

Désolé pour l'incompréhension !

Effectivement comme le dit Guillaume ça doit être possible, en codant un outil d'inspection de WAL...

Un contournement consiste à modifier l'archive_command pour écrire la date dans un fichier au moment de l'archivage WAL  :

Par exemple :

archive command  = " echo `date` > /mnt/archivedir/"%f".date;  cp "%p" /mnt/archivedir/"%f"

Du coup à chaque archivage vous aurez désormais :

  * 00000001000000000000008E : le wal lui-lême
  * 00000001000000000000008E.date contenant la date de l'archivage

Concrètement la date d'archivage n'est pas exactement la même que celle de la dernière transaction du wal mais ça vous donne une indication assez proche

Hors ligne

#6 31/08/2011 16:25:40

fifth
Membre

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

merci pour votre aide,
j'avais pensé à mettre dans le script appellé par l'archive commande quelque chose comme :
psql -Atc "select (pg_stat_file('${p}')).modification;"

Le problème est dans votre solution comme la mienne, le fait que la date récupérée est la date d'archivage du WAL et non la date de dernière transaction.
Il peu y avoir de gros écart suivant l'activité de la base.

Enfin, si on ne peut pas faire mieux ...

Hors ligne

#7 31/08/2011 16:48:02

daamien
damien clochard

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

ça ne change rien au problème mais la commande :

psql -Atc "select (pg_stat_file('${p}')).modification;"

peut être remplacée par

stat --format=%y $p

ça vous évite de déclencher un transaction supplémentaire à chaque archivage de log ;-)

Hors ligne

#8 31/08/2011 17:49:44

fifth
Membre

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

Merci pour le tuyau wink

Hors ligne

#9 13/09/2011 11:49:50

fifth
Membre

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

Bonjour,
la commande stat ne convient pas car elle donne l'heure a laquelle le WAL est archivé, qui peux être vraiment différente de l'heure de la derniere transaction dans le WAL.

Je veux bien essayer de coder quelque chose qui lit le contenu des WAL mais je ne connais pas la structure des WAL.
Quelqu'un sait-t-il ou la trouver ?
merci d'avance
Jean

Hors ligne

#10 13/09/2011 21:03:49

gleu
Administrateur

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL

La structure est déclarée dans le code source de PostgreSQL. Nul part ailleurs à ma connaissance.


Guillaume.

Hors ligne

#11 16/09/2011 16:16:51

dim
Membre

Re : Comment connaitre la date de la 1ere et derniere transaction dans WAL


Dimitri Fontaine
http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et Support

Hors ligne

Pied de page des forums