Aller au contenu principal

Migration de données

Cette section couvre les scénarios courants : migration depuis une autre version d'Aiterava, import de données existantes, et sauvegarde/restauration.

Sauvegardes automatiques​

Sauvegarde de la base de données​

# Dump PostgreSQL depuis le container
docker exec aiterava_onprem_db pg_dump \
-U aiterava aiterava \
| gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz

Sauvegarde des fichiers media​

docker cp aiterava_onprem_api:/app/media ./media_backup_$(date +%Y%m%d)/

Script de sauvegarde automatique (cron)​

# /opt/aiterava/backup.sh
#!/bin/bash
BACKUP_DIR="/opt/aiterava/backups"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"

# DB
docker exec aiterava_onprem_db pg_dump \
-U "${POSTGRES_USER:-aiterava}" "${POSTGRES_DB:-aiterava}" \
| gzip > "$BACKUP_DIR/db_$DATE.sql.gz"

# Supprimer les sauvegardes de plus de 30 jours
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +30 -delete

echo "Sauvegarde $DATE terminée"
chmod +x /opt/aiterava/backup.sh
# Ajouter au cron : sauvegarde quotidienne à 2h
(crontab -l 2>/dev/null; echo "0 2 * * * /opt/aiterava/backup.sh >> /var/log/aiterava-backup.log 2>&1") | crontab -

Restauration​

# Arrêter l'API pour éviter les écritures pendant la restauration
docker compose -f docker-compose.onprem.yml stop api celery celery-beat

# Restaurer
gunzip -c backup_20241104_020000.sql.gz | \
docker exec -i aiterava_onprem_db psql -U aiterava aiterava

# Redémarrer
docker compose -f docker-compose.onprem.yml start api celery celery-beat

Migration depuis une instance SaaS Aiterava​

Si vous souhaitez basculer d'une instance SaaS vers on-premise, contactez support@aiterraxis.com pour obtenir un export de vos données au format compatible.

Migrations de schéma (mises à jour)​

Les migrations Django sont appliquées automatiquement lors des mises à jour via le tableau de bord ou update.sh. Pour les appliquer manuellement :

docker exec aiterava_onprem_api python manage.py migrate --noinput
docker exec aiterava_onprem_api python manage.py showmigrations | grep "\[ \]"
# Les lignes avec [ ] sont des migrations non encore appliquées
Avant toute migration manuelle

Faites toujours une sauvegarde avant d'appliquer des migrations manuellement sur une base de données de production.


Prochaine étape → Dépannage