Vous n'êtes pas identifié(e).
Bonjour,
Après avoir activé les WAL, effectué une sauvegarde , supprimé le répertoire de la base postgres puis effectué la restore de base. Cela a fonctionné sans probleme.
Mais après l'arret suivant , la base ne demarre plus. Lorsque j'essaye de démarrer avec pg_ctl voici les messages renvoyés:
Mar 9 10:26:54 akf-pg02 postgres[27547]: [1-1] user=,db= LOG: database system was shut down at 2009-03-06 09:31:51 CET
Mar 9 10:26:54 akf-pg02 postgres[27547]: [2-1] user=,db= LOG: unexpected timeline ID 1 in log file 3, segment 39, offset 0
Mar 9 10:26:54 akf-pg02 postgres[27547]: [3-1] user=,db= LOG: invalid primary checkpoint record
Mar 9 10:26:54 akf-pg02 postgres[27547]: [4-1] user=,db= LOG: unexpected timeline ID 1 in log file 3, segment 39, offset 0
Mar 9 10:26:54 akf-pg02 postgres[27547]: [5-1] user=,db= LOG: invalid secondary checkpoint record
Mar 9 10:26:54 akf-pg02 postgres[27547]: [6-1] user=,db= PANIC: could not locate a valid checkpoint record
Mar 9 10:26:54 akf-pg02 postgres[27546]: [1-1] user=,db= LOG: startup process (PID 27547) was terminated by signal 6: Aborted
Mar 9 10:26:54 akf-pg02 postgres[27546]: [2-1] user=,db= LOG: aborting startup due to startup process failure
postgresql 8.3 sous red hat
Merci pour votre aide.
Dernière modification par pascal76 (09/03/2009 11:51:20)
Hors ligne
Après avoir activé les WAL
Vous voulez dire l'archivage ? parce que les WAL sont toujours activés.
supprimé le répertoire de la base postgres
Rassurez-moi, vous n'avez pas supprimé réellement le répertoire correspondant à la base postgres ?
Votre message d'erreur indique un problème grave dans les journaux de transactions. Le genre de problème où on arrête le serveur, on fait un initdb et on restaure tout à partir des sauvegardes.
Guillaume.
Hors ligne
oui c'est bien l'archivage des wal et si, j'ai bien supprimé le répertoire de la base.
dans une future étape nous restorerons sur un autre serveur et nous partirons également d'un répertoire de base vierge. en effet j'ai arrété le serveur, mis en place un recovery.conf et restoré. je n'ai pas fait d'initdb
Hors ligne
Il faudrait être plus précis dans votre description. Vous avez supprimé quoi ? tout pgdata (ie le cluster complet) ou seulement le répertoire correspondant à la seule base de données postgres (ie $PGDATA/base/11511) ? Vous avez sauvegardé quoi ? tout pgdata ou seulement la base de données postgres ? La restauration a été faite avant ou après l'arrêt du serveur ?
Il serait bien de décrire exactement les étapes que vous avez suivi, sinon il ne sera pas possible de vous dire ce qui n'a pas été.
Guillaume.
Hors ligne
j'ai fait
pg_start_backup , tar de tout le répertoire /data/pgsql/cluster1, pg_stop_backup
generation d'insert dans la base
arret postgres
mis de coté les log archivés
suppression de tous les fichiers sous /data/pgsql/cluster1
restore le tar de /data/pgsql/cluster1
recopier les log archivés vers pg_xlog
mis en place du recovery.conf avec target_time (mais il n'en a pas tenu compte il a tout restoré)
relancé postgres
cela fonctionnait pendant plusieurs jours sans souci
nouvel arret de la base postgres
elle n'a alors plus redemarré.
Hors ligne
Normalement, on ne recopie pas les logs archivés dans pg_xlog. On les laisse dans le répertoire d'archives et on configure restore_command pour qu'il aille chercher les journaux dans ce répertoire.
Guillaume.
Hors ligne
ok, voyez vous une solution pour faire redémarrer ma base ?
Hors ligne
À priori, le message « timeline id 1 » semble indiquer qu'il a cherché à relire des journaux de transactions et qu'il en a trouvé d'anciens ne correspondant pas à sa timeline id (qui doit être deux, si vous n'avez fait qu'une restauration à partir des WAL). S'il cherche à relire ses journaux et qu'il ne trouve pas le dernier checkpoint, c'est que l'arrêt (le deuxième) a dû être fait de façon peu orthodoxe. Là, sans avoir plus d'infos, il me semble que le plus sage est de faire un initdb et de recharger votre dernière sauvegarde.
Si elle est vraiment trop ancienne, vous pouvez tenter d'utiliser pg_resetxlog, mais prenez le temps de bien lire la page man de cet outil avant de l'utiliser. (http://docs.postgresqlfr.org/8.3/app-pgresetxlog.html)
Guillaume.
Hors ligne