← Retour
Informatique

Sauvegarde d'une base de données MariaDB

Cédrix · 26/10/2023
Modifié le 17 mai 2026 à 19h14

2/ 7 j  ·  9/ 14 j  ·  9/ 30 j  lecteurs

Il existe deux façons de sauvegarder une base MariaDB en ligne de commande. La première est recommandée car elle évite d’exposer le mot de passe ; la seconde, plus rapide à taper, le laisse apparaître dans l’historique du shell et dans la sortie de ps.

Ouvrez un terminal sur votre système avant de commencer.

Méthode recommandée : identifiants dans .my.cnf

Créez dans le répertoire personnel de l’utilisateur (~) un fichier .my.cnf contenant les identifiants utilisés pour la sauvegarde.

[mysqldump]
user=cedric
password='&qy9zh%Mzz$mA'

Restreignez immédiatement ses permissions pour que lui seul puisse le lire :

chmod 600 ~/.my.cnf

Lancez ensuite la sauvegarde avec mariadb-dump (ou mysqldump si la première commande n’est pas disponible) :

mariadb-dump -h [nom_du_serveur] [nom_de_la_base_de_données] > backup_[nom_de_la_base_de_données]_$(date "+%Y%m%d-%H%M%S").sql

Script complet

Le script ci-dessous crée le dump, l’archive au format tar.gz, puis supprime le fichier temporaire. Chaque étape est journalisée et toute erreur interrompt l’exécution.

#!/bin/bash

set -e
set -o pipefail

## Backup de la base de données

dateHeure=$(date "+%Y%m%d-%H%M%S")
database=[nom_de_la_base_de_donnees]
db_host=[nom_du_serveur]
file_log=/var/log/save_${database}-${dateHeure}.log
path_tmp=/tmp
path_backup=/var/backup
file_dump=backup_${database}_${dateHeure}.sql
file_dump_archive=${file_dump%.*}.tar.gz

checkError() {
    status=${1}
    message=${2}
    file_log=${3}
    if [ "$status" -ne 0 ]
    then
        echo "Erreur : ${message}" | tee -a "${file_log}"
        echo "Fin du script" | tee -a "${file_log}"
        exit "$status"
    fi

    return
}

echo -e "\n  Création du dump de la base de données" | tee -a "${file_log}"
mariadb-dump -h "${db_host}" "${database}" > "${path_tmp}/${file_dump}"
checkError $? "création du dump de la base" "${file_log}"

echo -e "\n  Création de l'archive du dump" | tee -a "${file_log}"
tar zcvf "${path_backup}/${file_dump_archive}" "${path_tmp}/${file_dump}" | tee -a "${file_log}"
checkError $? "création de l'archive" "${file_log}"

echo -e "\n  Suppression du dump" | tee -a "${file_log}"
rm "${path_tmp}/${file_dump}" | tee -a "${file_log}"
checkError $? "suppression du dump de la base de données" "${file_log}"

set -o pipefail garantit qu’une erreur dans mariadb-dump sera bien remontée même lorsqu’elle est suivie d’un tee. Le dump n’est volontairement pas redirigé vers le log : seuls les messages d’étape y figurent.

Méthode non sécurisée : identifiants en ligne de commande

À éviter en production : le mot de passe apparaît dans l’historique du shell et peut être visible via ps.

mariadb-dump -u [utilisateur] -p[password] [nom_de_la_base_de_données] > [nom_du_fichier_de_sauvegarde.sql]
  • [utilisateur] : nom d’utilisateur MariaDB.
  • [password] : mot de passe, collé immédiatement après -p (sans espace). Omettez-le pour que la commande le demande de manière interactive — c’est déjà plus sûr.
  • [nom_de_la_base_de_données] : base à sauvegarder.
  • [nom_du_fichier_de_sauvegarde.sql] : fichier de destination, généralement avec l’extension .sql.

Le fichier produit contient toutes les instructions SQL nécessaires à la restauration ultérieure de la base.

Partager : ✉ Mail X in 🐘
Commentaires

Aucun commentaire pour l'instant. Soyez le premier !

Laisser un commentaire
Un code de vérification sera envoyé à votre adresse email.