Backup et restauration
Informations de la base de donnees
| Parametre | Valeur |
|---|---|
| Container | raci-flow-postgres |
| Image | postgres:16-alpine |
| Utilisateur | raci_user |
| Base de donnees | raci_flow |
| Volume Docker | postgres_data |
| Chemin interne | /var/lib/postgresql/data |
Backup manuel avec pg_dump
Dump complet (format SQL)
docker exec raci-flow-postgres pg_dump \
-U raci_user \
-d raci_flow \
--no-owner \
--no-privileges \
> /root/backups/raci_flow_$(date +%Y%m%d_%H%M%S).sql
Dump complet (format custom, compresse)
docker exec raci-flow-postgres pg_dump \
-U raci_user \
-d raci_flow \
-Fc \
> /root/backups/raci_flow_$(date +%Y%m%d_%H%M%S).dump
Le format custom (-Fc) est recommande car il est compresse et permet une restauration selective.
Dump du schema uniquement
docker exec raci-flow-postgres pg_dump \
-U raci_user \
-d raci_flow \
--schema-only \
> /root/backups/raci_flow_schema_$(date +%Y%m%d_%H%M%S).sql
Restauration
Depuis un dump SQL
docker exec -i raci-flow-postgres psql \
-U raci_user \
-d raci_flow \
< /root/backups/raci_flow_XXXXXXXX_XXXXXX.sql
Depuis un dump format custom
docker exec -i raci-flow-postgres pg_restore \
-U raci_user \
-d raci_flow \
--clean \
--if-exists \
< /root/backups/raci_flow_XXXXXXXX_XXXXXX.dump
L’option --clean --if-exists supprime les objets existants avant de les recreer.
Backup automatique quotidien (a mettre en place)
Note : La strategie de backup automatique quotidien est en cours de mise en place.
Exemple de script cron a configurer :
#!/bin/bash
# /root/scripts/backup-raciflow.sh
BACKUP_DIR="/root/backups/raciflow"
RETENTION_DAYS=30
mkdir -p "$BACKUP_DIR"
# Dump
docker exec raci-flow-postgres pg_dump \
-U raci_user \
-d raci_flow \
-Fc \
> "$BACKUP_DIR/raci_flow_$(date +%Y%m%d_%H%M%S).dump"
# Nettoyage des backups de plus de N jours
find "$BACKUP_DIR" -name "*.dump" -mtime +$RETENTION_DAYS -delete
Cron suggere (crontab -e) :
0 3 * * * /root/scripts/backup-raciflow.sh >> /var/log/backup-raciflow.log 2>&1
Backup du volume Redis
Redis est configure avec la persistance AOF (--appendonly yes). Les donnees sont stockees dans le volume Docker redis_data.
# Sauvegarder les donnees Redis
docker exec raci-flow-redis redis-cli BGSAVE
docker cp raci-flow-redis:/data/dump.rdb /root/backups/redis_$(date +%Y%m%d).rdb
Points d’attention
- Toujours verifier l’integrite du dump apres la sauvegarde
- Tester regulierement la procedure de restauration sur un environnement de test
- Les migrations Drizzle doivent etre compatibles avec les donnees restaurees
- En cas de restauration, redemarrer le container applicatif pour reinitialiser les connexions