Backup des Bases de Donnees
1. Quoi ? — Definition et contexte
Section intitulée « 1. Quoi ? — Definition et contexte »Chaque nuit a 3h du matin, un script sauvegarde les quatre bases de donnees PostgreSQL de l’infrastructure, le filestore Odoo, et la cle de chiffrement N8N vers Google Drive. Si quelque chose echoue, une alerte part immediatement via le Notification Hub.
Ce qui est sauvegarde
Section intitulée « Ce qui est sauvegarde »| Donnee | Source | Taille typique |
|---|---|---|
| Base N8N | PostgreSQL n8n-stack | ~500 MB |
Base Odoo (guig_db) | PostgreSQL odoo-stack | ~200 MB |
| Base TimeTrackr | PostgreSQL timetrackr-stack | ~10 MB |
| Filestore Odoo | /var/lib/odoo/filestore/ | ~1 GB |
| Cle N8N | N8N_ENCRYPTION_KEY | Quelques octets |
2. Pourquoi ? — Enjeux et motivations
Section intitulée « 2. Pourquoi ? — Enjeux et motivations »Problemes resolus
Section intitulée « Problemes resolus »| Probleme | Sans backup auto | Avec backup auto |
|---|---|---|
| Perte de donnees | Corruption DB = tout perdu | Restauration depuis GDrive |
| Oubli de backup | ”Ca fait combien de temps ?” | Cron quotidien 3h00 |
| Pas de retention | Disque local plein | Rotation locale 7j, GDrive 30j |
| Echec silencieux | Backup echoue, personne ne sait | Alerte Telegram immediate |
3. Comment ? — Mise en oeuvre technique
Section intitulée « 3. Comment ? — Mise en oeuvre technique »Architecture
Section intitulée « Architecture »Le script backup-databases.sh
Section intitulée « Le script backup-databases.sh »Le script est declenche par crontab a 3h00 (0 3 * * *). Il execute dans l’ordre :
- Dump PostgreSQL —
pg_dumppour chaque base viadocker exec - Compression — gzip des dumps
- Copie filestore — Archive tar du filestore Odoo
- Export cle N8N — Extraction de
N8N_ENCRYPTION_KEYdepuis les variables d’environnement - Upload GDrive — rclone copy vers le dossier distant
- Rotation locale — Suppression des fichiers de plus de 7 jours
- Rotation GDrive — Suppression des fichiers de plus de 30 jours
Si une etape echoue, le script continue les autres et envoie une notification d’erreur au Notification Hub en fin d’execution.
Politique de retention
Section intitulée « Politique de retention »| Stockage | Retention | Rotation |
|---|---|---|
Local (/backups/) | 7 jours | Script quotidien |
| Google Drive | 30 jours | rclone delete --min-age 30d |
Verification
Section intitulée « Verification »# Voir les derniers backups locauxls -lh /backups/
# Voir les logstail -20 /var/log/backup-databases.log
# Verifier le croncrontab -l | grep backup4. Et si ? — Perspectives et limites
Section intitulée « 4. Et si ? — Perspectives et limites »Limites actuelles
Section intitulée « Limites actuelles »| Limite | Impact | Mitigation |
|---|---|---|
| Pas de test de restauration | On decouvre les problemes au pire moment | Test mensuel prevu |
| GDrive single point | Si GDrive down, pas de backup distant | Ajouter un 2e provider (S3) |
| Pas de backup incremental | Full dump chaque nuit | Acceptable pour les volumes actuels |
Scenarios d’evolution
Section intitulée « Scenarios d’evolution »Si volume de donnees augmente :
- Passer aux backups incrementaux (WAL archiving PostgreSQL)
- Compresser avec zstd au lieu de gzip (plus rapide, meilleur ratio)
Si besoin de restauration rapide :
- Script de restore automatise
- Test de restauration automatique hebdomadaire dans un conteneur ephemere
Pages liees
Section intitulée « Pages liees »Infrastructure
Section intitulée « Infrastructure »- Architecture VPS — Vue d’ensemble des stacks
- N8N en mode Queue — Base N8N sauvegardee
- Odoo 18 sur Docker — Base Odoo sauvegardee
Workflows
Section intitulée « Workflows »- Notification Hub — Alertes en cas d’echec
- N8N Export GitHub — Backup complementaire des workflows