Mercredi le 31 mars 2010 à 15:45

Sauvegarder et restaurer vos base de données mysql

Par Mohammed CHERIFI

Il vous ai jamais arrivé un jour de perdre des données? Combien de temps vous il vous a fallu pour les recréer? ouais ouais c’est difficile, du chagrin et des larmes.. l’être humain n’est pas fiable, bien que le matériel moderne a de plus en plus tendance de l’être. Tous les données ont une valeur, la récréer demande du temps et beaucoup de travail d’où l’importance de la sauvegarde!

Dans ce billet on verra comment sauvegarder et restaurer vos bases de données mysql!

Quels outils?

mysql et mysqldump sont deux commandes disponibles dans mysql qui nous permettront d’effectuer une sauvegarde ou une restauration! on considère que le nom du serveur est 192.168.1.10, l’utilisateur est root et le mot de passe est p455wD

Faire un backup

Pour faire un dump de la base mabase il suffit d’exécuter la commande mysqldump:

mysqldump -h192.168.1.10 -uroot -pp455wd > backupmybase.sql

d’où backupmybase.sql et le fichier qui contiendra le backup et sera crée après exécution de la commande mysqldump

Restaurer une base de données à partir d’un backup

C’est via la commande mysql elle même :

mysql -h192.168.1.10 -uroot -pp455wd < mybackupbase.sql

les signes < et > permettent de rediriger la sortie d’une commande respectivement en lecture et écriture

Sauvegarder toutes les bases de données en une seule commande

mysqldump --user=root --password=p455wd --all-databases | gzip > all_mysql_databases.sql.gz

Créer un script de sauvegarde pour faire un backup de toutes les bases de données

Parfois on a besoin de faire des backups réguliers sans avoir à installer des outils spécialisés sur nos serveurs comme cpanel ou autres, j’ai créé pour vous ce petit script qui permet de faire cela avec la possibilité de supprimer les anciens backup datant de X jours (10 dans notre cas). Créez donc un fichier mysqlbackup.sh contenant le code suivant

# Adresse du serveur
mysql_host="192.168.1.10"
# Nom d'utilisateur mysql
mysql_user="mcherifi"
# Mot de passe mysql
mysql_pwd="p455wd"
# Répertoire de sauvegarde
backup_dir="/home/simo/"
# Nombre de jour pour suppression des anciens backups
delete_after=10

# DEBUT DU SCRIPT
date_debut_sauvegarde="$(date +"%d-%m-%Y")"
current_backupdir=$backup_dir"/"$date_debut_sauvegarde

[ ! -d $backup_dir  ] && mkdir -p $backup_dir  || :
[ ! -d $current_backupdir  ] && mkdir -p $current_backupdir  || :

find ${backup_dir}* -mtime +$delete_after -exec rm -f {} \;
for i in `mysqlshow -h $mysql_host --user=$mysql_user --password=$mysql_pwd | awk -F "^| " '{print $2}' | grep -v '^$'`
do
mysqldump -h $mysql_host --user=$mysql_user --password=$mysql_pwd --add-locks --add-drop-table $i | gzip > $current_backupdir"/"$i.sql.gz | grep '^$'
done;

et voilà le script tout prêt!

Rendre la sauvegarde périodique avec crontab

Crontab est un outil permettant d’exécuter des taches réguliers à un temps précis, on l’utilisera dans notre cas pour effectuer des sauvegarde quotidienne de nos base de données mysql!

Il existe plusieurs répertoires créés par cron permettant d’exécuter des taches régulières:

  • /etc/cron.hourly : les scripts exécutés chaque heure.
  • /etc/cron.daily : les scripts exécutés chaque jour.
  • /etc/cron.weekly : les scripts exécutés chaque semaine.
  • /etc/cron.monthly : les scripts exécutés chaque mois.

Pour exécuter notre script chaque jour, il suffit de le placer dans le répertoire /etc/cron.daily est le tour est joué! toute fois il est possible de préciser le temps exacte d’exécution du script il faut créer un fichier contab avec la commande :

crontab -e

la commande ouvrira l’éditeur de texte standard vi, si vous ne sentez pas à l’aise avec vi, consultez sa documentation officielle

après ajoutez le code suivant à la fin de votre fichier (en mettant le bon chemin du fichier backup.sh) :

0 23 * * *  /home/simo/mysqlbackup.sh

Il ne reste que quittez vi et sauvegarder notre tache avec (Echap:wq)

  • 0 23 * * * Signifie que le script sera exécuté chaque jour à 23h00
  • /home/simo/mysqlbackup.sh est le chemin où se trouve le script de sauvegarde

Cliquez ici pour télécharger le script mysqlbackup.sh, en espérant que ce tutoriel vous sera utile!

Partager cet article:
  • Twitter
  • Facebook
  • Google Bookmarks
  • del.icio.us
  • Netvibes
  • viadeo FR
  • Digg
  • LinkedIn
  • Slashdot
  • Sphinn
  • Mixx
  • Blogplay
  • Identi.ca
  • Print
  • Ping.fm
  • email
  • Posterous
  • Reddit
  • Yahoo! Buzz
  • PDF
  • RSS
  • Diigo
  • Fark
  • Blogosphere News
  • blogtercimlap
Tags :, , , ,

Articles similaires

  • No Related Post

3 Commentaires to Sauvegarder et restaurer vos base de données mysql

Avatar

zspirit

avril 1st, 2010 at 9 h 36 min

très joli le nouveau thème de ton site même les couleurs sont un peut féminine :D et merci pour cet articl j’avais besoin d’un truc de ce genre…je vais prendre le temps de tester le code…et bon courage pour la suite ;)

Avatar

Mohammed CHERIFI

avril 1st, 2010 at 9 h 41 min

Oula Zak! c’est les couleurs du printemps mon ami voyant :p

Avatar

Chadi Nanaa

avril 1st, 2010 at 11 h 36 min

@Zakaria: le rose est devenu une mode comme les produits à Apple :d
@Mohammed:un bon sujet :) et utile :)

Réagissez à ce billet

Categories

Derniers commentaires

  • mohamed hacker: mdr V4 team c mes pote et je vous informe ke le resau avai une faille de blind sql injection pas +
  • sghiouar abdelfettah: Oui c’est vraiment sympa de voir un opérateur qui se fait beaucoup d’argent des...
  • swaina: Merci beaucoup ça m’a été très utile.
  • Jamel naitssi: || :o)
  • Jamel naitssi: joli tutoriel Mr.cherifi , c’est intéressant fréro, sauf que dans le code à la ligne 4 ya ça :...
  • Victor: Roseny : Pour avoir les mois en Français voici mon code : $dateWidget = new sfWidgetFormI18nDate(array(...
  • abdessamad: Salam, Salutation pour cet article, N.B :  » Un md5 est une chaine de caractère en hexadécimal...
  • 0x1337: Nice tuto bien structuré et synthétisé ! La question qui se pose est ce un attaquant peut faire un Privilege...
  • Roseny: Bonjour, comment fais-t’on pour mettre les mois en français?
  • Laurent: Bonjour Mohammed et merci pour ce tuto. Que faut-il modifier pour que le champ date soit en un seul bloc au...

Flickr PhotoStream

  • Au dessus des montagnes
  • Nuages
  • Insolite hopital marocain
  • Plage bouznika
  • Maroc Blog awars with vladimire
  • Linux Party 2010 - EMI (Maroc)
  • Mawazine 2008
  • Essaouira
  • Rabat Ville with baba mimoun
  • Fucking CowBoyz
  • Essaouira 2009 - En attente de l'arrivé du cheb khaled!
  • Linux Install party Mohammadia

Twitter Feed

  • : le 01 Jan 1970 00:00