Voici le quatrième et dernier volet de la petite série d’articles sur MariaDB. Jusqu’ici, nous avons abordé l’installation du serveur de bases de données MariaDB sous Rocky Linux 8, la création et l’exploitation sommaire d’une série de bases de données, ainsi que la configuration d’un accès distant à une base depuis une autre machine. Aujourd’hui, nous allons voir en détail la sauvegarde et la restauration des bases de données MariaDB.
Sauvegarder une base de données
La commande mysqldump
sert à sauvegarder une base de données MariaDB sous forme d’une série d’instructions SQL. L’exemple suivant effectue une sauvegarde complète de la base de données departements
(que nous avons eu l’occasion de voir ici) :
$ mkdir -v sql mkdir: created directory 'sql' $ cd sql/ $ mysqldump -u deptuser -p departements > departements.sql Enter password: ********** $ ls departements.sql
Jetez un œil au fichier résultant :
$ less departements.sql
Vous constatez qu’il ressemble de très près au fichier departement.sql
que nous avons récupéré depuis le site SQL.sh.
L’option --all-databases
sauvegarde toutes les bases de données d’un serveur :
$ mysqldump -u root -p --all-databases > sauvegarde_bases.sql Enter password: ********** $ ls departements.sql sauvegarde_bases.sql
Sur un serveur de production, les fichiers SQL résultants sont parfois très volumineux. Dans ce cas, on peut les compresser durant la sauvegarde. Voici ce que cela donne pour les deux exemples précédents :
$ mysqldump -u deptuser -p departements | gzip -c > departements.sql.gz Enter password: ********** $ mysqldump -u root -p --all-databases | gzip -c > sauvegarde_bases.sql.gz Enter password: **********
En règle générale, la compression est efficace sur des fichiers au format texte simple comme ceux qui contiennent des requêtes SQL. Dans notre exemple, la sauvegarde occupe 3.5 fois moins de place :
$ ls -lh sauvegarde_bases.sql* -rw-rw-r--. 1 vagrant vagrant 481K Apr 15 11:30 sauvegarde_bases.sql -rw-rw-r--. 1 vagrant vagrant 139K Apr 15 11:33 sauvegarde_bases.sql.gz
Restaurer une base de données
Maintenant que nous savons sauvegarder nos bases de données individuellement et « à la louche », nous nous demandons vaguement comment les restaurer à partir de la sauvegarde. Nous voilà comme Monsieur Jourdain dans Le Bourgeois Gentilhomme, qui fait de la prose sans le savoir. En effet, l’import initial du fichier departement.sql
vers notre base vide departements
n’était rien d’autre qu’une restauration :
$ mysql -u deptuser -p departements < departement.sql Enter password: **********
Connectez-vous au moniteur MariaDB pour vérifier si tout est en place :
$ mysql -u deptuser -p
Enter password: **********
Welcome to the MariaDB monitor.
...
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| departements |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
...
Pour restaurer une sauvegarde globale, il suffit d’invoquer la commande suivante qui gère également la création des bases de données :
$ mysql -u root -p < sauvegarde_bases.sql
Là aussi, connectez-vous au moniteur MariaDB pour vérifier sommairement si tout s’est passé comme prévu :
$ mysql -u root -p
Sauvegardes automatiques
Mon dépôt Gitlab fournit un script shell sqldump.sh
dans le répertoire el8/sqldump
. Ce script permet d’effectuer des sauvegardes automatiques de l’ensemble des bases MySQL/MariaDB d’un serveur, individuellement et « à la louche ». Les sauvegardes se présentent sous forme d’une série de fichiers compressés *.sql.gz
rangés dans le répertoire ~/sql
. Par la suite, ces fichiers pourront être récupérés par un serveur de sauvegardes.
$ cd
$ mkdir ~/bin (si le répertoire n'existe pas)
$ git clone https://gitlab.com/kikinovak/rocky-8-server
$ cp rocky-8-server/el8/sqldump/sqldump.sh ~/bin/
$ chmod 0700 ~/bin/sqldump.sh
$ vim ~/bin/sqldump.sh
Une fois qu’on a édité le script à sa convenance, on peut définir une tâche automatique :
# crontab -e
# Backup all MySQL databases at 0:30
30 00 * * * /path/to/bin/sqldump.sh 1> /dev/null
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
0 commentaire