Cosmétique et correction

This commit is contained in:
Emmanuel Viennet 2023-02-28 17:43:39 +01:00
parent 969143829e
commit 6631a40891

View File

@ -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 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 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 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: Nous recommandons d'agir à deux niveaux:
* sauvegarde des bases de données postgresql: dump des bases dans des fichiers. * 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. 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 * 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 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 doivent être sauvegardées dans une salle (voire un bâtiment) différente de
celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une celle abritant le serveur ScoDoc (vols ou incendies). Typiquement, une
sauvegarde quotidienne (nocturne) est suffisante. sauvegarde quotidienne (nocturne) est suffisante.
Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire Notons que ScoDoc sauvegarde de nombreuses informations sous le répertoire
`/opt/scodoc-data` (en particulier les photos, les documents archivés et divers `/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 réglages): *il est absolument nécessaire de sauvegarder aussi ce répertoire*, en
plus des bases de données SQL. 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`) 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 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 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 Par défaut, les fichiers de sauvegardes sont créés dans le répertoire de
l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`). l'utilisateur `postgres` (actuellement `/var/lib/postgresql/`).
En tant que `root` sur le serveur, faire: En tant que `root` sur le serveur, faire:
```
```bash
# su postgres # su postgres
# cd # cd
# crontab -e # crontab -e
``` ```
et ajouter: et ajouter:
```
```bash
15 * * * * /opt/scodoc/tools/backups/backup_db9 SCODOC 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
<img src="/img/alert.png" style="vertical-align: bottom; margin:0 0 0 0;" la base de données: configuration du logiciel, photos des étudiants. Ce
alt="/!\" /> Attention, certaines informations sont stockées dans des fichiers paragraphe ne traite que de la restauration de la base de données.
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 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 `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``XXX` est concerné. Utiliser par `/var/lib/postgresql/SCODOC-BACKUPS``XXX` est concerné. Utiliser par
exemple `ls -lrt` pour visualiser les sauvegardes triées par date. 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 cp /var/lib/postgresql/SCODOC-BACKUPS/backup.hourly/2021-09-17T19\:15/SCODOC_pgdump.gz /tmp
gunzip /tmp/SCODOC_pgdump.gz gunzip /tmp/SCODOC_pgdump.gz
``` ```
3. Recharger la base complète. <img src="/img/alert.png" style="vertical-align: 1. Recharger la base complète. 🚸 Attention, *cette opération effacera et
bottom; margin:0 0 0 0;" alt="/!\" /> Attention, cette opération effacera et remplacera le contenu de la base de données actuelle !*
remplacera) le contenu de la base de données actuelle...
``` ```bash
# en tant que root... # en tant que root...
systemctl stop scodoc9 # arret du serveur systemctl stop scodoc9 # arret du serveur
su - scodoc su - scodoc
dropdb SCODOC # <<< votre base production dropdb SCODOC # <<< votre base production
createdb -E UTF-8 SCODOC 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 source venv/bin/activate
flask db upgrade # nécessaire seulement si sauvegarde ancienne flask db upgrade # nécessaire seulement si sauvegarde ancienne
flask clear-cache flask clear-cache
@ -96,12 +97,15 @@ systemctl start scodoc9 # relance ScoDoc
``` ```
## Déplacement de toute une installation ## Déplacement de toute une installation
Les scripts ci-dessus ne se chargent que de la base de données SQL. 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 Pour créer une sauvegarde complète d'une installation, vous pouvez utiliser le
script script
```bash
tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz tools/save_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
```
Ce script va générer une archive (`tar`, format `.tgz`) contenant non seulement 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: 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 même), transférer le fichier généré (`/tmp/sauvegarde-scodoc.tgz`) dans
l'exemple ci-dessus) et utiliser l'exemple ci-dessus) et utiliser
```bash
tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz tools/restore_scodoc9_data.sh /tmp/sauvegarde-scodoc.tgz
```
(Note: la sauvegarde s'effectue comme utilisateur `scodoc`, en revanche le (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 rechargement doit se faire en tant que `root` car il faut évidemment arrêter et
relancer le service). relancer le service).