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 pipefailgarantit qu’une erreur dansmariadb-dumpsera bien remontée même lorsqu’elle est suivie d’untee. 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.
Commentaires
Aucun commentaire pour l'instant. Soyez le premier !
Laisser un commentaire