From 6631a408913924e67be8f19be41afea86ef80e06 Mon Sep 17 00:00:00 2001 From: viennet Date: Tue, 28 Feb 2023 17:43:39 +0100 Subject: [PATCH] =?UTF-8?q?Cosm=C3=A9tique=20et=20correction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/SauvegardesBases.md | 62 +++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/docs/SauvegardesBases.md b/docs/SauvegardesBases.md index 4b8af2c..7d7a44f 100644 --- a/docs/SauvegardesBases.md +++ b/docs/SauvegardesBases.md @@ -1,6 +1,5 @@ +# Mise en place de sauvegardes des bases de données ScoDoc 9 - -# Mise en place de sauvegardes des bases de données ScoDoc 9 Il est ***vivement recommandé*** de mettre en place une stratégie de sauvegarde permettant de rétablir le service en minimisant les pertes de données à la suite d'un accident majeur mais probable comme: crash de disque dur, bug, vol du @@ -8,22 +7,22 @@ serveur, incendie... Nous recommandons d'agir à deux niveaux: - * sauvegarde des bases de données postgresql: dump des bases dans des fichiers. - Le script donné ci-dessous peut se charger de gérer cela. +* sauvegarde des bases de données postgresql: dump des bases dans des fichiers. +Le script donné ci-dessous peut se charger de gérer cela. - * sauvegarde du système complet (et de ses disques durs): la forme dépend de - l'environnement (machine virtuelle ou non...). Dans tous les cas, les données - doivent être sauvegardées dans une salle (voire un bâtiment) différente de - celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une - sauvegarde quotidienne (nocturne) est suffisante. +* sauvegarde du système complet (et de ses disques durs): la forme dépend de +l'environnement (machine virtuelle ou non...). Dans tous les cas, les données +doivent être sauvegardées dans une salle (voire un bâtiment) différente de +celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une +sauvegarde quotidienne (nocturne) est suffisante. Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire `/opt/scodoc-data` (en particulier les photos, les documents archivés et divers réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en plus des bases de données SQL. +## Dump des bases de données -## Dump des bases de données Le script `backup_db9` (fourni dans le répertoire `/opt/scodoc/tools/backups`) peut être utilisé pour effectuer des sauvegardes automatisées des bases de données SQL. Les données sont extraites de la base et écrites sur le disque @@ -39,26 +38,28 @@ derniers mois (tout ceci est paramétrable dans le script Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`). - En tant que `root` sur le serveur, faire: -``` + +```bash # su postgres # cd # crontab -e ``` + et ajouter: -``` + +```bash 15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC ``` -(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez configuré sur une autre base). +(ScoDoc9 utilise par défaut la base nommée `SCODOC`, adaptez si vous l'avez +configuré sur une autre base). +## En cas de problème: restaurer la base à partir d'une sauvegarde -## En cas de problème: restaurer la base à partir d'une sauvegarde - Attention, certaines informations sont stockées dans des fichiers -et non dans la base de données: configuration du logiciel, photos des étudiants. -Ce paragraphe ne traite que de la restauration de la base de données. +🚸 Attention, certaines informations sont stockées dans des fichiers et non dans +la base de données: configuration du logiciel, photos des étudiants. Ce +paragraphe ne traite que de la restauration de la base de données. Rappel: en ScoDoc 9, il n'y a qu'une seule base de donnée SQL, nommée par défaut `SCODOC`. Cette base contient les données des départements et la définition des @@ -70,23 +71,23 @@ comptes utilisateurs. `/var/lib/postgresql/SCODOC-BACKUPS`où `XXX` est concerné. Utiliser par exemple `ls -lrt` pour visualiser les sauvegardes triées par date. - 1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple: + 1. Copier le fichier de sauvegarde choisi et le décomprimer; par exemple: -``` +```bash cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp gunzip /tmp/SCODOC_pgdump.gz ``` - - 3. Recharger la base complète. /!\ Attention, cette opération effacera et - remplacera) le contenu de la base de données actuelle... -``` + + 1. Recharger la base complète. 🚸 Attention, *cette opération effacera et + remplacera le contenu de la base de données actuelle !* + +```bash # en tant que root... systemctl stop scodoc9 # arret du serveur su - scodoc dropdb SCODOC # <<< votre base production createdb -E UTF-8 SCODOC -pg_restore -d SCODOC /tmp/SCODOC_pgdump.gz # (nom du fichier dump) +pg_restore -d SCODOC /tmp/SCODOC_pgdump # (nom du fichier dump) source venv/bin/activate flask db upgrade # nécessaire seulement si sauvegarde ancienne flask clear-cache @@ -96,12 +97,15 @@ systemctl start scodoc9 # relance ScoDoc ``` ## Déplacement de toute une installation + Les scripts ci-dessus ne se chargent que de la base de données SQL. Pour créer une sauvegarde complète d'une installation, vous pouvez utiliser le script +```bash tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz +``` Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement la base de données SQL mais aussi tous les fichiers générés par votre ScoDoc: @@ -117,10 +121,10 @@ Pour restaurer ce type de sauvegarde, sur une autre machine (ou plus tard sur la même), transférer le fichier généré (`/tmp/sauvegarde-scodoc.tgz`) dans l'exemple ci-dessus) et utiliser +```bash tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz +``` (Note: la sauvegarde s'effectue comme utilisateur `scodoc`, en revanche le rechargement doit se faire en tant que `root` car il faut évidemment arrêter et relancer le service). - -