Script de backup de bases mysql
Lors de mon précédent article, nous avons vu comment faire une sauvegarde des fichiers avec l’outil backup-manager.
Cet outil offre la possibilité de faire une sauvegarde des bases mysql, mais j’ai choisi de ne pas utiliser cette possibilité, et d’utiliser un script bash que j’ai trouver ici en le modifiant un peu à mon goût.
Il est cependant possible d’utiliser backup-manager pour sauvegarder les fichiers brut du serveur mysql qui se trouvent généralement dans /var/lib/mysql et de les restaurer avec cette méthode que j’ai utiliser il y a quelques temps.
Nous pouvons aussi faire un dump des bases mysql avec backup-manager.
Bon assez de blabla voilà le script que j’ai commenter avec le maximum d’informations. Vous ne devriez pas avoir de mal à l’utiliser.
Il vous faudra l’outil ncftp pour qu’il fonctionne, afin d’envoyer les bases sur un serveur ftp.
sudo aptitude install ncftp
Copier coller ce script dans un fichier backup_sql.sh par exemple.
Puis chmod +x backup_sql.sh pour le rendre exécutable.
#!/bin/bash # User + pass + host du serveur mysql à sauvegarder SQL_USER="sqluser" SQL_PASS="p@ssw0rd" SQL_HOST="localhost" # Chemin des différent programme utiliser, ne rien toucher ici MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" CHOWN="$(which chown)" CHMOD="$(which chmod)" GZIP="$(which gzip)" # Emplacement du dossier de backup local (sans slash a la fin) DEST="/backup" # Sous répertoire local ou on sauvegarde les fichiers sql DEST_SQL="$DEST/sql" # Date et heure NOW="$(date +"%d-%m-%Y")" HEURE=$(date +%d"-"%m"-"%Y"@"%H":"%M"'"%S) # Indiquez ici les bases a ne PAS sauvegarder séparer par un espaces IGGY="" # On initialise les variables FILE="" DBS="" # On crée le répertoire de backup sql si pas déjà fait [ ! -d $DEST_SQL ] && mkdir -p $DEST_SQL || : # On limite l'accès a root uniquement # (supprimer les commentaires si vous souhaitez utiliser cette option) #$CHOWN 0.0 -R $DEST_SQL #$CHMOD 0600 $DEST_SQL # On liste les bases de données DBS="$($MYSQL -u $SQL_USER -h $SQL_HOST -p$SQL_PASS -Bse 'show databases')" for db in $DBS do skipdb=-1 if [ "$IGGY" != "" ]; then for i in $IGGY do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ] ; then FILE="$DEST_SQL/$db.$NOW.gz" # On boucle, et on dump toutes les bases et on les compresse avec gzip $MYSQLDUMP -u $SQL_USER -h $SQL_HOST -p$SQL_PASS $db | $GZIP -9 > $FILE fi done # Nombres de jour de backup a conserver (ici 7 jours) j=7 jours_a_delete=$(date +%d-%m-%Y --date "$j days ago") # Configuration des répertoires de backup pour le ftp DIR_BACKUP_SQL="$DEST_SQL" DIR_DIST_BACKUP_SQL="/sql/" # Configuration login, mot de pass du serveur ftp FTP_USER="ftpuser" FTP_PASS="p@ssw0rd" FTP_HOST="backup.domaine.com" ####################### ## Upload sur le ftp ## ####################### ncftp -u $FTP_USER -p $FTP_PASS $FTP_HOST < <TOTO cd $DIR_DIST_BACKUP_SQL lcd $DIR_BACKUP_SQL mkdir $NOW cd $NOW put -r * cd .. rm -rf $jours_a_delete bye TOTO # On delete le backup local cd $DEST_SQL rm -r * # Si vous exécuter le script à la main # on peu faire un echo afin de voir si tout c'est bien dérouler echo "Envoi reussi le $HEURE"
En cas de problèmes, les commentaires sont là pour
Commentaires récents