Si votre serveur de bases de données venait à faire défaut, vos précieuses bases de données seraient perdues.
C'est pourquoi il est important d'avoir en tout temps une sauvegarde récente de toutes les bases de données qu'il contient.
La commande mysqldump permet de générer un script SQL qui pourra recréer une base de données et tout ce qu'elle contient : ses données, ses index, ses procédures et fonctions stockées, etc.
Avec l'option --all-databases, il est possible de générer d'un seul coup les requêtes SQL qui permettent de recréer TOUTES les bases de données présentes sur le serveur MySQL.
Toutes ces requêtes seront contenues dans un seul et même fichier SQL.
mysqldump -u root -p --default-character-set=utf8 --routines --comments --triggers --all-databases > ToutesBDMySQL.sql
Si vous avez accès à l'outil mysqldump-secure, un simple appel à ce script créera une script SQL pour chacune de vos bases de données.
Cet outil est installé par défaut sous Devilbox.
Voici comment l'utiliser dans cet environnement.
docker exec -it devilbox-php-1 bash
mysqldump-secure
Ces deux opérations peuvent être combinées en une seule commande qui pourra être copiée dans un fichier bash pour faciliter son utilisation.
docker exec -it devilbox-php-1 bash -c 'mysqldump-secure'
[INFO] (OPT): Logging enabled
[INFO] (OPT): MySQL SSL connection disabled
[INFO] (OPT): Compression enabled
[INFO] (OPT): Encryption disabled
[INFO] (OPT): Deletion disabled
[INFO] (OPT): Nagios log disabled
[INFO] (OPT): Info files enabled
[INFO] (SQL): 1/13 Dumping: premierebd (236.44 MB) 6 sec (23.14 MB)
[INFO] (SQL): 2/13 Dumping: deuxiemebd (2.22 MB) 1 sec (0.33 MB)
[INFO] (SQL): 3/13 Skipping: information_schema (DB is ignored)
[INFO] (SQL): 4/13 Dumping: troisiemebd (1.92 MB) 0 sec (0.08 MB)
[INFO] (SQL): 5/13 Dumping: quatriemebd (0.02 MB) 0 sec (0.00 MB)
[INFO] (SQL): 6/13 Dumping: mysql (12.80 MB) 1 sec (0.99 MB)
[INFO] (SQL): 7/13 Dumping: cinquiemebd (0.20 MB) 0 sec (0.00 MB)
[INFO] (SQL): 8/13 Skipping: performance_schema (DB is ignored)
[INFO] (SQL): 9/13 Dumping: sixiemebd (48.28 MB) 3 sec (5.50 MB)
[INFO] (SQL): 10/13 Dumping: septiemebd (60.08 MB) 4 sec (6.18 MB)
[INFO] (SQL): 11/13 Dumping: huitiemebd (70.08 MB) 4 sec (6.51 MB)
[INFO] (SQL): 12/13 Dumping: deuviemebd (74.14 MB) 4 sec (7.83 MB)
[INFO] (SQL): 13/13 Dumping: dixiemebd (69.12 MB) 4 sec (7.11 MB)
[OK] Finished successfully
Les fichiers SQL sont créés dans un volume synchronisé avec votre poste local donc ils demeureront disponibles même si les conteneurs et les volumes étaient détruits.
Sur votre poste de travail, vous les trouverez dans le dossier devilbox/backups/mysql.
Pour chaque base de données, deux fichiers sont créés :
Si vous n'avez pas accès à mysqldump-secure ou si vous souhaitez travailler avec votre propre script pour sauvegarder vos bases de données, vous pouvez utiliser utiliser une astuce1 qui consiste à boucler dans les résultats d'une requête qui affiche le nom de chaque base de données.
Je vous propose ce petit script qui permet d'y arriver. Il peut être utilisé tel quel sous Mac. Si vous travaillez sous Windows, quelques petits ajustements seront nécessaires, tel que présenté plus bas.
En prime, je vous propose également les ajustements nécessaires si vous travaillez sous Devilbox.
Notez que sous Mac, si le fichier porte l'extension .bash ou .sh, il sera possible de l'exécuter seulement à partir d'une fenêtre Terminal (ne pas oublier de mettre « ./ » avant d'écrire son nom lors de l'appel). S'il porte l'extension .command, il sera possible de l'exécuter également en double-cliquant sur son nom dans le Finder.
Toujours sous Mac, vous devez ajouter les droits d'exécution sur ce fichier (voir Exécuter un fichier bash).
#!/bin/bash
# Génère des scripts SQL qui permettent de recréer chacune des bases de données, en ajoutant la date du jour au nom de chaque script.
# Programmé par Christiane Lagacé : https://christianelagace.com
# Le 29 mars 2015
# Dernier ajustement par Christiane Lagacé
# Le 9 septembre 2022
# Modifications : Version qui génère un fichier SQL pour chacune des bases de données.
# *************************
# ***** Configuration *****
# *************************
# ***** VOUS DEVEZ REMPLIR CETTE SECTION *****
# Requis seulement si le serveur de bases de données est installé directement sur votre ordinateur (pas dans un conteneur)
# Chemin du dossier qui contient le fichier mysqldump.exe
# (ex : "/Applications/AMPPS/mysql/bin" ou /Applications/XAMPP/xamppfiles/bin)
cheminMySQLBin="/Applications/AMPPS/mysql/bin"
# Requis seulement si le serveur de bases de données est installé dans un conteneur
# Nom du conteneur MySQL (docker ps permet de lister les conteneurs)
# (ex : devilbox-mysql-1)
conteneur=devilbox-mysql-1
# Nom de l'usager MySQL qui détient les droit requis pour sauvegarder les bases de données
usagerMySQL=root
# Chemin du dossier dans lequel le ou les scripts seront sauvegardés
# (ex : ~/sauvegarde ou /Users/monnom/Documents/sauvegarde)
# (ex sous Windows : C:\\Users\\monnom\\Documents\\sauvegarde)
cheminCible=~/sauvegarde
Dans le cas où votre serveur MySQL est dans un conteneur Docker monté avec Devilbox, vous devez apporter quelques modifications au fichier original afin que votre ordinateur puisse lancer une commande dans le conteneur.
La variable cheminMySQLBin ne sera plus utile alors vous pouvez la mettre en commentaire.
Remplacez la partie du bas par ceci :
Ce script pourra rouler sous Windows si vous avez installé WSL 2.
Vous devrez apporter quelques ajustements au script.
bash nomfichier.bash
1. « MySQL Back-up: Take a mysqldump with each database in its own SQL File ». Mattias Geniar. https://ma.ttias.be/mysql-back-up-take-a-mysqldump-with-each-database-in-its-own-sql-file/
▼Publicité