Réparer une base FireBird |
La galère du jour : réparer une base FireBird (ou comment se battre avec des erreurs “database unavailable” sans trop que l’on sache pourquoi 🙂 )
Alors, après s’être battu plusieurs dizaines de minutes pour trouver la bonne syntaxe (pas forcément très lisible dans la documentation), voici les différentes étapes :
1. Sauvegarder la base (on ne sait jamais)
2. Valider la base (rechercher les corruptions)
3. Nettoyer la base (suppression des enregistrements défectueux)
4. Sauvegarde
5. Restauration
1. Sauvegarde de la base
Toujours faire un backup avant de commencer!
Plusieurs solutions :
– Sauvegarde de la VM (c’est cela tourne sur une VM)
– Sauvegarde de la base avec GBak :
set path=%path%;"c:\Program Files (x86)\Firebird\Firebird_1_5\bin" gbak -user SYSDBA -password masterkey localhost:C:\Chemin\MABASE.fdb c:\backup\MABASE.fbk
La base est dans C:\chemin\MABASE.FDB et on la sauvegarde dans C:\backup\MABASE.fbk
2. Valider la base
On va rechercher les corruptions dans la base. Ce processus permet à priori de détecter les problèmes et de les marquer pour la suite :
gfix.exe -v -full -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb
3. Nettoyer la base
Maintenant, on va supprimer toutes les corruptions détectées à l’étape précédente :
gfix.exe -mend -ig -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb
4. Sauvegarder la base
La base est désormais propre, on va la sauvegarder :
gbak.exe -b -g -v -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb c:\temp\MABASEpropre.fbk
5. Restaurer la base
Si tout s’est bien passé lors de la sauvegarde, on peut écraser la base de prod avec la base sauvegardée (et donc propre) :
gbak.exe -c -v -user SYSDBA -password masterkey c:\temp\MABASEpropre.fbk localhost:c:\Chemin\MABASE.fdb
En résumé
On reprend le modus operandi :
- Ajout des binaires dans le Path : set path=%path%;”c:\Program Files (x86)\Firebird\Firebird_1_5\bin”
- Sauvegarde : gbak -user SYSDBA -password masterkey localhost:C:\Chemin\MABASE.fdb c:\backup\MABASE.fbk
- Détection : gfix.exe -v -full -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb
- Nettoyage : gfix.exe -mend -ig -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb
- Sauvegarde : gbak.exe -b -g -v -user SYSDBA -password masterkey localhost:c:\Chemin\MABASE.fdb c:\temp\MABASEpropre.fbk
- Restauration : gbak.exe -c -v -user SYSDBA -password masterkey c:\temp\MABASEpropre.fbk localhost:c:\Chemin\MABASE.fdb
Et voilà !
Sources :
Firebird Database Housekeeping Utility Documentation
Firebird databases recovery and protection for enterprises and ISVs
GBAK Firebird Backup and Restore (Stefan Heymann’s)