Base de donnée sqlite de Bacula irrécupérable
Lors d'un incident sur l'un des modules EOLE la base de donnée sqlite de Bacula peut être irrécupérable.
Il est possible de restaurer des données sans la base de données avec les commandes bls
et bextract
.
Inspiré de l'article suivant : https://pipposan.wordpress.com/2010/06/09/bacula-tape-restore-without-database/
Truc & astuce
Il est également de réaliser la récupération avec la commande bconsole
.
Montage du support de sauvegarde et affichage des volumes par date
La commande ls -lrt
permet de trier l'affichage des volumes par date :
root@srv-scribe:~# ls -lrt /mnt/sauvegardes/
On voit une sauvegarde FULL le 06/06 (de nombreux volumes de 2Go ont la même date) :
-rw-r----- 1 bacula root 1999997379 2015-06-06 02:02 ScribeVolume0044
-rw-r----- 1 bacula root 1999936662 2015-06-06 02:05 ScribeVolume0068
-rw-r----- 1 bacula root 1999936707 2015-06-06 02:09 ScribeVolume0045
[...]
-rw-r----- 1 bacula root 1999936658 2015-06-06 04:34 ScribeVolume-0241
-rw-r----- 1 root root 1999936613 2015-06-06 04:38 ScribeVolume-0302
Utilisation de la commande bls
root@srv-scribe:~# bls -j -V ScribeVolume0044 /mnt/sauvegardes
bls: butil.c:282 Using device: "/mnt/sauvegardes" for reading.
15-jun 16:38 bls JobId 0: Prêt à lire les données du volume « ScribeVolume0044 » depuis le device "FileStorage" (/mnt/sauvegardes).
Volume Record: File:blk=0:208 SessId=103 SessTime=1427205136 JobId=1 DataLen=173
End Job Session Record: File:blk=0:603258940 SessId=103 SessTime=1427205136 JobId=3381
Date=03-jun-2015 02:08:39 Level=I Type=B Files=13,342 Bytes=752,617,191 Errors=0 Status=T
Begin Job Session Record: File:blk=0:603259372 SessId=104 SessTime=1427205136 JobId=3382
Job=BackupCatalog.2015-06-03_02.00.00_48 Date=03-jun-2015 02:12:24 Level=I Type=B
End Job Session Record: File:blk=0:603259372 SessId=104 SessTime=1427205136 JobId=3382
Date=03-jun-2015 02:12:24 Level=I Type=B Files=0 Bytes=0 Errors=0 Status=T
[...]
Begin Job Session Record: File:blk=0:1308041742 SessId=109 SessTime=1427205136 JobId=3387
Job=Complet.2015-06-06_02.00.00_53 Date=06-jun-2015 02:00:12 Level=F Type=B
15-jun 15:54 bls JobId 0: Fin de Volume au fichier 0 sur le Device "FileStorage" (/mnt/sauvegardes), Volume « ScribeVolume0044 »
15-jun 15:54 bls JobId 0: Fin de tous les Volumes.
Le Job du 06/06/2015 a SessId=109 et SessTime=1427205136. Ainsi que le Job du dernier volume en date du 06/06/2015
root@srv-scribe:~# bls -j -V ScribeVolume-0302 /mnt/sauvegardes
bls: butil.c:282 Using device: "/mnt/sauvegardes" for reading.
15-jun 15:59 bls JobId 0: Prêt à lire les données du volume « ScribeVolume-0302 » depuis le device "FileStorage" (/mnt/sauvegardes).
Volume Record: File:blk=0:209 SessId=109 SessTime=1427205136 JobId=33 DataLen=174
15-jun 16:00 bls JobId 0: Fin de Volume au fichier 0 sur le Device "FileStorage" (/mnt/sauvegardes), Volume « ScribeVolume-0302 »
15-jun 16:00 bls JobId 0: Fin de tous les Volumes.
Génération d'un fichier bootstrap avec la liste des volumes à utiliser (tous ceux du 06/06/2015)
root@srv-scribe:~# cat boostrap.bsr
Volume="ScribeVolume0044"
VolSessionId=109
VolSessionTime=1427205136
Volume="ScribeVolume0068"
VolSessionId=109
VolSessionTime=1427205136
Volume="ScribeVolume0045"
VolSessionId=109
VolSessionTime=1427205136
[...]
Volume="ScribeVolume-0302"
VolSessionId=109
VolSessionTime=1427205136
Restauration
root@srv-scribe:~# bextract -b boostrap.bsr /mnt/sauvegardes /home/restore/
Restauration Ldap
root@srv-scribe:~# service slapd stop
root@srv-scribe:~# md /home/sav/ldap
root@srv-scribe:~# mv /var/lib/ldap/*.* /home/sav/ldap/
root@srv-scribe:~# slapadd -l /home/sauv_ldap.ldif
Restauration MySQL
root@srv-scribe:~# mysql_pwd.py eole21 nomodif
root@srv-scribe:~# mysql -uroot -peole21 < /home/sauv_mysql.sql
Restauration Quotas
root@srv-scribe:~# bacularestore.py --quota
Restauration SID
root@srv-scribe:~# cat /etc/eole/${MODULE}_SID | xargs net setlocalsid
Reconfiguration du serveur
Il faut procéder à la reconfiguration du serveur à l'aide de la commande reconfigure
.