Suite à quelques heures passées sur les forums de recherche, et à m'arracher les cheveux , j'ai mis au point deux scripts :
- l'un permettant la sauvegarde des bases de données OCS et GLPI, ainsi que leur compression, tout cela automatisé via un .bat
- le deuxième permettant la restauration de ces bases en cas de crash.
Pour exécuter régulièrement la commande de sauvegarde, il n'y a plus qu'à le passer en tâche planifiée .
NB : Les deux commandes sont à placer sur le bureau du serveur pour que ça fonctionne.
Il y a par contre quelques pré-requis :
- installer 7zip.exe (dispo sur Internet) => compression en .7z plus forte qu'en .zip
- utilisation de 7za pour la compression (7za : module supplémentaire de 7zip, fonctionnant en mode commande et à télécharger ici: http://www.7-zip.org/download.html );
- création d'un répertoire de sauvegarde :
C:\xampp\mysql\backup\
- création d'un répertoire de sauvegarde pour la base GLPI :
C:\xampp\mysql\backup\glpi\
- création d'un répertoire de sauvegarde pour la base OCS :
C:\xampp\mysql\backup\ocs\
- création d'un sous-répertoire de sauvegarde pour la base GLPI :
C:\xampp\mysql\backup\glpi\backup\
- création d'un sous-répertoire de sauvegarde pour la base OCS :
C:\xampp\mysql\backup\ocs\backup\
- création d'un répertoire d'archivage des sauvegardes pour la base GLPI :
C:\xampp\mysql\backup\glpi\old_backup\
- création d'un répertoire d'archivage des sauvegardes pour la base OCS :
C:\xampp\mysql\backup\ocs\old_backup\
Commande de sauvegarde :
@echo off
echo Sauvegarde de la base de donnees GLPI...
move "C:\xampp\mysql\backup\glpi\backup\backup_glpi_*" "C:\xampp\mysql\backup\glpi\old_backup\"
set filename=backup_GLPI_%date:~0,2%_%date:~3,2%_%date:~6,4%_%time:~0,2%h%time:~3,2%
"C:\xampp\mysql\bin\mysqldump.exe" -h localhost -u root --database parc_informatique_aero > "C:\xampp\mysql\backup\glpi\backup\%filename%.sql"
"C:\Program Files\7-Zip\7za\7za.exe" a %filename%.7z "C:\xampp\mysql\backup\glpi\backup\*"
del "C:\xampp\mysql\backup\glpi\backup\*.sql"
move "C:\Documents and Settings\Administrateur\Bureau\backup_GLPI_*" "C:\xampp\mysql\backup\glpi\backup\"
echo Sauvegarde de la base de donnees OCS...
move "C:\xampp\mysql\backup\ocs\backup\backup_ocs_*" "C:\xampp\mysql\backup\ocs\old_backup\"
set filename=backup_OCS_%date:~0,2%_%date:~3,2%_%date:~6,4%_%time:~0,2%h%time:~3,2%
"C:\xampp\mysql\bin\mysqldump.exe" -h localhost -u root --database ocsweb > "C:\xampp\mysql\backup\ocs\backup\%filename%.sql"
"C:\Program Files\7-Zip\7za\7za.exe" a %filename%.7z "C:\xampp\mysql\backup\ocs\backup\*"
del "C:\xampp\mysql\backup\ocs\backup\*.sql"
move "C:\Documents and Settings\Administrateur\Bureau\backup_OCS_*" "C:\xampp\mysql\backup\ocs\backup\"
Commande de restauration (fonctionnelle pour l'instant à 50% - vous verrez pourquoi plus bas) :
@echo off
echo Decompression et restauration de la base de donnees GLPI...
"C:\Program Files\7-Zip\7za\7za.exe" x "C:\xampp\mysql\backup\glpi\backup\*" -oC:\xampp\mysql\backup\glpi\backup
rename "C:\xampp\mysql\backup\glpi\backup\*.sql" "backup_GLPI.sql"
"C:\xampp\mysql\bin\mysql.exe" -u root --database parc_informatique_aero < "C:\xampp\mysql\backup\glpi\backup\backup_GLPI.sql"
del "C:\xampp\mysql\backup\glpi\backup\backup_GLPI.sql"
echo Decompression et restauration de la base de donnees OCS...
"C:\Program Files\7-Zip\7za\7za.exe" x "C:\xampp\mysql\backup\ocs\backup\*" -oC:\xampp\mysql\backup\ocs\backup
rename "C:\xampp\mysql\backup\ocs\backup\*.sql" "backup_OCS.sql"
"C:\xampp\mysql\bin\mysql.exe" -u root --database ocsweb < "C:\xampp\mysql\backup\ocs\backup\backup_OCS.sql"
del "C:\xampp\mysql\backup\ocs\backup\backup_OCS.sql"
Souci rencontré :
La base parc_informatique_aero est recréée sans problème à l'emplacement voulu, et toutes les commandes liées à la restauration de cette base fonctionne sans problème.
Pour la base ocsweb, c'est autre chose : l'extraction fonctionne parfaitement, ainsi que le renommage de cette base en "backup_ocs.sql". C'est lorsque l'on exécute la commande de restauration que le problème survient :
"error 1005 <HY000> at line 33: Can't create table 'ocsweb.accesslog' <errno: 121>"
En allant sur différents forums où ce problème a été rencontré, j'ai découvert que ça pourrait être issu d'un souci de clé étrangère. Je voudrais donc savoir s'il existe des solutions à mon problème?
Pour le reste de la commande, la ligne de suppression du fichier .sql extrait précédemment fonctionne bien.
Message édité par hardsession le 14-10-2010 à 12:00:31