Skip to the content.

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