Bonjour,
A chaque démarrage de mon serveur, un script exécute les commandes suivantes:
1 - sauvegarde a froid de la base de données (tar des répertoires)
2 - Démarrage du serveur (pg_ctl -w start-D xxx)
1 Si la commande failed (retour != 0) -> Fait autre chose
2 Sinon le programme continue
Ce code fonctionne très bien dans la majorité des cas.
Cependant il se pose un problème dans le cas ou il y a eu arrêt brutal de la machine (Genre coupure courant).
Dans ce cas la commande pg_ctl -w start me renvoi immédiatement un code retour != 0 mais continue a essayer de démarrer le serveur jusqu'a y parvenir.
Ce qui me surprend, c'est que la commande wait est censé attendre la fin du démarrage du serveur avant de rendre la main.
Voici la log de mon programme qui commence juste après la tentative de démarrage du serveur (pg_ctl -w start)
Voici ma config:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Postgres>pg_ctl: another server might be running; trying to start server anyway Postgres>pg_ctl: could not start server Postgres>Examine the log output APPLI>Command failed: pg_ctl -w start -D /data/mabase <-- LA COMMANDE REND LA MAIN ICI Postgres>LOG: database system was interrupted at 2009-11-20 19:04:28 UTC Postgres>LOG: checkpoint record is at 0/21AF40C Postgres>LOG: redo record is at 0/21AF40C; undo record is at 0/0; shutdown FALSE Postgres>LOG: next transaction ID: 0/14029; next OID: 17192 Postgres>LOG: next MultiXactId: 1; next MultiXactOffset: 0 Postgres>LOG: database system was not properly shut down; automatic recovery in progress Postgres>LOG: redo starts at 0/21AF454 Postgres>LOG: record with zero length at 0/21B2070 Postgres>LOG: redo done at 0/21B2048 Postgres>LOG: database system is ready
Postgres 8.2
Mandriva 2007
Si quelqu'un a une idée, je suis bien évidemment très intéressé.
Arnaud
Partager