diff --git a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/draft_overlay.json b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/draft_overlay.json deleted file mode 100644 index 058db58..0000000 --- a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/draft_overlay.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "title": "Sauvegarde d'une base de données MariaDB", - "_updated_at": "2026-05-17 19:14:21", - "slug": "effectuer-une-sauvegarde-de-base-de-donnees", - "published": true, - "published_at": "2023-10-26 11:42", - "category": "Informatique", - "tags": { - "tags": [ - "MariaDB" - ] - }, - "seo_title": "", - "seo_description": "" -} diff --git a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/draft_overlay.md b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/draft_overlay.md deleted file mode 100644 index 9fb5df0..0000000 --- a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/draft_overlay.md +++ /dev/null @@ -1,92 +0,0 @@ -# Sauvegarde d'une base de données MariaDB - -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 : - -```bash -chmod 600 ~/.my.cnf -``` - -Lancez ensuite la sauvegarde avec `mariadb-dump` (ou `mysqldump` si la première commande n'est pas disponible) : - -```bash -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. - -```bash -#!/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. \ No newline at end of file diff --git a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/index.md b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/index.md index 1b63917..9fb5df0 100644 --- a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/index.md +++ b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/index.md @@ -1,13 +1,12 @@ -# Sauvegarde une base de données MariaDB +# Sauvegarde d'une base de données MariaDB -![Nom de la section](dummy.png) +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`. -Il existe deux façon de faire une sauvegarde. L'une est plus sécurisée que l'autre. +Ouvrez un terminal sur votre système avant de commencer. -Ouvrez une fenêtre de terminal ou une invite de commande sur votre système. +## Méthode recommandée : identifiants dans `.my.cnf` -## Sauvegarde sécurisée -Créer dans le home de l'utilisateur (`~`) le fichier `.my.cnf`. Ce fichier contiendra le nom et le mot de passe qui seront utilisés lors de la sauvegarde. +Créez dans le répertoire personnel de l'utilisateur (`~`) un fichier `.my.cnf` contenant les identifiants utilisés pour la sauvegarde. ``` [mysqldump] @@ -15,21 +14,30 @@ user=cedric password='&qy9zh%Mzz$mA' ``` -Utiliser la commande `mariadb-dump` pour effectuer la sauvegarde. -Si la commande `mariadb-dump` ne fonctionne pas, essayez `mysqldump`. +Restreignez immédiatement ses permissions pour que lui seul puisse le lire : + +```bash +chmod 600 ~/.my.cnf +``` + +Lancez ensuite la sauvegarde avec `mariadb-dump` (ou `mysqldump` si la première commande n'est pas disponible) : ```bash 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 ``` -On peut imaginer un script complet. +### 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. + ```bash #!/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] @@ -38,46 +46,47 @@ 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 "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} | tee "${path_tmp}"/"${file_dump}" | 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}" + +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 du l'archive" "${file_log}" - -echo -e "\n Suppression du dump"| tee -a "${file_log}" -rm "${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}" ``` -## Sauvegarde non sécurisée +> `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] : Remplacez ceci par le nom d'utilisateur MySQL. -- [password] : Si l'utilisateur MySQL a un mot de passe, vous pouvez le spécifier immédiatement après -p (sans espace). Si vous ne le spécifiez pas, la commande vous demandera le mot de passe lors de l'exécution. -- [nom_de_la_base_de_données] : Remplacez ceci par le nom de la base de données que vous souhaitez sauvegarder. -- [nom_du_fichier_de_sauvegarde.sql] : Remplacez ceci par le nom que vous souhaitez donner au fichier de sauvegarde. Il aura généralement l'extension ".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`. -Exécutez la commande en appuyant sur Entrée. Si un mot de passe est nécessaire et que vous ne l'avez pas spécifié après -p, la commande vous le demandera. - -La commande `mysqldump` créera une sauvegarde de la base de données spécifiée dans le fichier indiqué. Ce fichier contiendra toutes les instructions SQL nécessaires pour restaurer la base de données ultérieurement. - -N'oubliez pas de prendre des mesures de sécurité appropriées pour protéger vos informations d'identification MySQL, car elles sont sensibles. \ No newline at end of file +Le fichier produit contient toutes les instructions SQL nécessaires à la restauration ultérieure de la base. \ No newline at end of file diff --git a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/meta.json b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/meta.json index 4dfaca3..06214db 100644 --- a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/meta.json +++ b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/meta.json @@ -1,18 +1,31 @@ { "uuid": "7752fdd9-61b3-4c45-8b81-8538e7b5d691", "slug": "effectuer-une-sauvegarde-de-base-de-donnees", - "title": "Sauvegarde une base de données MariaDB", + "title": "Sauvegarde d'une base de données MariaDB", "author": "cedric@abonnel.fr", "published": true, - "published_at": "2023-10-26 11:42:39", + "featured": false, + "published_at": "2023-10-26 11:42", "created_at": "2023-10-26 11:42:39", - "updated_at": "2023-10-26 11:42:39", - "revisions": [], + "updated_at": "2026-05-17 19:14:23", + "revisions": [ + { + "n": 1, + "date": "2026-05-17 19:14:23", + "comment": "Titre modifié, tags modifiés, contenu modifié", + "title": "Sauvegarde une base de données MariaDB" + } + ], "cover": "", "files_meta": [], "external_links": [], "seo_title": "", "seo_description": "", "og_image": "", - "category": "Informatique" + "category": "Informatique", + "tags": { + "tags": [ + "MariaDB" + ] + } } diff --git a/7752fdd9-61b3-4c45-8b81-8538e7b5d691/revisions/0001.md b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/revisions/0001.md new file mode 100644 index 0000000..1b63917 --- /dev/null +++ b/7752fdd9-61b3-4c45-8b81-8538e7b5d691/revisions/0001.md @@ -0,0 +1,83 @@ +# Sauvegarde une base de données MariaDB + +![Nom de la section](dummy.png) + +Il existe deux façon de faire une sauvegarde. L'une est plus sécurisée que l'autre. + +Ouvrez une fenêtre de terminal ou une invite de commande sur votre système. + +## Sauvegarde sécurisée +Créer dans le home de l'utilisateur (`~`) le fichier `.my.cnf`. Ce fichier contiendra le nom et le mot de passe qui seront utilisés lors de la sauvegarde. + +``` +[mysqldump] +user=cedric +password='&qy9zh%Mzz$mA' +``` + +Utiliser la commande `mariadb-dump` pour effectuer la sauvegarde. +Si la commande `mariadb-dump` ne fonctionne pas, essayez `mysqldump`. + +```bash +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 +``` + +On peut imaginer un script complet. +```bash +#!/bin/bash + +set -e + +## 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} | tee "${path_tmp}"/"${file_dump}" | tee -a "${file_log}" +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 du 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}" +``` + +## Sauvegarde non sécurisée +``` +mariadb-dump -u [utilisateur] -p[password] [nom_de_la_base_de_données] > [nom_du_fichier_de_sauvegarde.sql] +``` + +- [utilisateur] : Remplacez ceci par le nom d'utilisateur MySQL. +- [password] : Si l'utilisateur MySQL a un mot de passe, vous pouvez le spécifier immédiatement après -p (sans espace). Si vous ne le spécifiez pas, la commande vous demandera le mot de passe lors de l'exécution. +- [nom_de_la_base_de_données] : Remplacez ceci par le nom de la base de données que vous souhaitez sauvegarder. +- [nom_du_fichier_de_sauvegarde.sql] : Remplacez ceci par le nom que vous souhaitez donner au fichier de sauvegarde. Il aura généralement l'extension ".sql". + +Exécutez la commande en appuyant sur Entrée. Si un mot de passe est nécessaire et que vous ne l'avez pas spécifié après -p, la commande vous le demandera. + +La commande `mysqldump` créera une sauvegarde de la base de données spécifiée dans le fichier indiqué. Ce fichier contiendra toutes les instructions SQL nécessaires pour restaurer la base de données ultérieurement. + +N'oubliez pas de prendre des mesures de sécurité appropriées pour protéger vos informations d'identification MySQL, car elles sont sensibles. \ No newline at end of file