MariaDBVoici 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

Sauvegarde 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

AstuceSur 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

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *