Base de donnée sqlite de Bareos irrécupérable

Lors d'un incident sur l'un des modules EOLE la base de donnée sqlite de Bareos 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 possible 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/2015 (de nombreux volumes de 2Go ont la même date) :

-rw-r----- 1 bareos root 1999997379 2015-06-06 02:02 ScribeVolume0044

-rw-r----- 1 bareos root 1999936662 2015-06-06 02:05 ScribeVolume0068

-rw-r----- 1 bareos root 1999936707 2015-06-06 02:09 ScribeVolume0045

[...]

-rw-r----- 1 bareos 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 bsl

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:~# root 15133 15119 25 16:26 pts/5 00:07:31 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:~# bareosrestore.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.