Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Voilà, on va apprendre à faire une sauvegarde (ou un
dump) de votre base de données MySQL
sous Linux.
À quoi ça sert de faire un backup, une sauvegarde ou un dump (

) de ma base de données ?
Tout simplement à ce que si votre serveur a un problème, vous risquez de perdre toutes vos données, donc on ne le dit jamais assez : faites des dumps de vos bases de données !
Toutes les commandes qui suivent devront être exécutées dans le terminal sous Linux.

Alors voilà

...
Dumper MySQL
Cette opération consiste à sauvegarder votre base de données.
Exécutez cette ligne :
Code : SQL1 | mysqldump base_de_donnees -u utilisateur -p mot_de_passe > dump.sql gzip dump.sql
|
Ici,
base_de_donnees,
utilisateur et
mot_de_passe sont à modifier avec vos informations. Vous pouvez modifier le nom
dump.sql pour
mabase.sql (par exemple).
Vous obtiendrez alors votre
dump.sql.gzip.
Ne modifiez pas le .sql car sinon, votre code ne fonctionnera pas. Si vous modifiez le nom, changez-le les deux fois où il est appelé (pour le nom d'enregistrement et le gzip).
Pour sauvegarder
toutes les bases de données, exécutez cette ligne :
Code : SQL1 | mysqldump -u utilisateur -p mot_de_passe --all-databases > dump.sql gzip dump.sql
|
Il est aussi possible de sauvegarder plus d'une base de données (mais pas toutes) en une seule commande, au lieu de le faire plusieurs fois :
Code : SQL1 | mysqldump --databases base_de_donnees1 base_de_donnees2 ... > dump.sql
|
Ne copiez pas les " ... " dans la commande au-dessus, c'est juste pour dire qu'on peut en mettre plus.
Comme d'habitude, modifiez les informations dans la ligne de commande

!
Récupérer sa base MySQL avec un dump
Exécutez cette ligne :
Code : SQL1 | gunzip dump.sql.gz mysql < base_de_donnees
|
Ici, modifiez le nom de
base_de_donnees par celle où vous voulez que le contenu de votre dump ( sauvegarde

) soit extrait, et modifiez le
dump.sql.zip par le nom de votre fichier.
Comme au-dessus, ne modifiez que le nom du dump, pas le
.sql.gzip car sinon, votre code ne marchera pas

!
Il est possible que vous deviez donner votre mot de passe pour recréer la base de données (ça dépend sous quel hébergeur vous êtes, mais c'est assez rare) :
Code : SQL1 | gunzip dump.sql.gz mysql -p mot_de_passe < base_de_donnees
|
Ici, modifiez le nom du fichier (voir les deux "
Attention !", plus haut), le
base_de_donnees et le
mot_de_passe, comme expliqué au-dessus.
Si votre dump n'a pas été
gzippé, exécutez cette ligne :
Code : SQL1 | mysql -u utilisateur -p mot_de_passe base_de_donnees < dump.sql
|
OK, donc on va finir avec un petit QCM

.
Eh oui, c'est possible, il y a un code en PHP qui permet de faire un dump de votre base MySQL ! Voici le code PHP (merci à AdRi1

) :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 | <?php
$host = "localhost";
$user = "****";
$pass = "****"; // On définit les infos de la base de données
$db = "****";
$date = date("d-m-Y"); // On définit le variable $date (ici, son format)
$backup = $db."bdd-backup_".$date.".sql.gz";
// Utilise les fonctions système : MySQLdump & GZIP pour générer un backup gzipé
$command = "mysqldump -h$host -u$user -p$pass $db | gzip> $backup";
system($command);
// Démarre la procédure de téléchargement
$taille = filesize($backup);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/gzip");
header("Content-Disposition: attachment; filename=$backup;");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$taille);
@readfile($backup);
// Supprime le fichier temporaire du serveur
unlink($backup);
?>
|
Voilà

!
Ce script gzippe le dump de votre base MySQL !
Sinon, pour plus d'informations, la documentation officielle sur
-mysqldump :
Informations -mysqldump
Have fun

!