Aller au contenu principal

Sauvegardes et restauration

Dès que vous utilisez le logiciel en environnement de production, nous vous recommandons d'effectuer des sauvegardes régulières. Cela protège aussi bien contre les erreurs humaines, comme la suppression accidentelle d'objets, que contre la perte de données due à des défaillances matérielles.

Sauvegarde de VM Proxmox (recommandé)

Étant donné qu'OpenVLE est généralement exploité en tant que VM sur le cluster Proxmox VE, le moyen le plus simple et recommandé est une sauvegarde native Proxmox de l'ensemble de la VM. Cela permet de sécuriser toutes les bases de données, fichiers de configuration et volumes Docker en une seule étape.

Proxmox prend en charge différentes cibles de sauvegarde (par ex. Proxmox Backup Server, NFS, CIFS) et permet des sauvegardes aussi bien manuelles que planifiées via l'interface web de Proxmox ou la ligne de commande. En cas de problème, l'ensemble de la VM peut être restaurée à partir de la sauvegarde.

remarque

La configuration de la sauvegarde Proxmox s'effectue sur le cluster Proxmox VE lui-même et ne fait pas partie de la configuration OpenVLE. Vous trouverez de plus amples informations dans la documentation de sauvegarde Proxmox VE.

Dumps de base de données (complémentaire)

En complément des sauvegardes de VM, les dumps de base de données peuvent être utiles pour des restaurations granulaires — par ex. lorsqu'une seule base de données doit être réinitialisée sans restaurer l'ensemble de la VM.

Que faut-il sauvegarder ?

ComposantDonnéesEmplacementPriorité
MariaDBEntités principales (utilisateurs, VMs, événements, rôles, etc.)./mariadb/dataCritique
MongoDBActivités, journaux, événements système./mongodbÉlevée
RedisFile de tâches, cacheIn-Memory + AOFFaible
.envConfiguration du backend, secrets./Critique
frontend.envConfiguration du frontend./Critique
docker-compose.ymlDéfinitions des services./Moyenne
Redis

Redis sert principalement de file de tâches et de cache. Les données sont automatiquement restaurées à partir du fichier AOF lors d'un redémarrage. Une sauvegarde séparée n'est généralement pas nécessaire.

Créer une sauvegarde

MariaDB

La base de données MariaDB contient toutes les entités principales et doit être sauvegardée quotidiennement :

docker exec openvle-mariadb mariadb-dump \
-u "$MARIADB_USER" \
-p"$MARIADB_PASSWORD" \
"$MARIADB_DATABASE" > backup_mariadb_$(date +%Y%m%d).sql

Les variables (MARIADB_USER, MARIADB_PASSWORD, MARIADB_DATABASE) se trouvent dans votre .env. Voir Référence de configuration.

MongoDB

MongoDB stocke les activités, les journaux et les événements système :

docker exec openvle-mongodb mongodump \
--username="$MONGODB_USER" \
--password="$MONGODB_PASSWORD" \
--db="$MONGODB_DATABASE" \
--archive > backup_mongodb_$(date +%Y%m%d).archive

Fichiers de configuration

Sauvegardez les fichiers .env et les configurations Docker Compose :

cp .env .env.backup_$(date +%Y%m%d)
cp frontend.env frontend.env.backup_$(date +%Y%m%d)
cp docker-compose.yml docker-compose.yml.backup_$(date +%Y%m%d)

Restauration

attention

Arrêtez les conteneurs concernés avant de restaurer une sauvegarde afin d'éviter des incohérences de données.

MariaDB

docker compose stop backend worker worker-vm-clone worker-periodic scheduler
docker exec -i openvle-mariadb mariadb \
-u "$MARIADB_USER" \
-p"$MARIADB_PASSWORD" \
"$MARIADB_DATABASE" < backup_mariadb_YYYYMMDD.sql
docker compose up -d backend worker worker-vm-clone worker-periodic scheduler

MongoDB

docker compose stop backend worker worker-vm-clone worker-periodic scheduler
docker exec -i openvle-mongodb mongorestore \
--username="$MONGODB_USER" \
--password="$MONGODB_PASSWORD" \
--db="$MONGODB_DATABASE" \
--archive --drop < backup_mongodb_YYYYMMDD.archive
docker compose up -d backend worker worker-vm-clone worker-periodic scheduler

Automatisation (Cron)

Le script suivant sauvegarde les deux bases de données quotidiennement et conserve les sauvegardes des 14 derniers jours :

#!/bin/bash
BACKUP_DIR="/opt/openvle/backups"
RETENTION_DAYS=14
DATE=$(date +%Y%m%d)

mkdir -p "$BACKUP_DIR"

# MariaDB
docker exec openvle-mariadb mariadb-dump \
-u "$MARIADB_USER" -p"$MARIADB_PASSWORD" "$MARIADB_DATABASE" \
> "$BACKUP_DIR/mariadb_$DATE.sql"

# MongoDB
docker exec openvle-mongodb mongodump \
--username="$MONGODB_USER" --password="$MONGODB_PASSWORD" \
--db="$MONGODB_DATABASE" --archive \
> "$BACKUP_DIR/mongodb_$DATE.archive"

# Supprimer les anciennes sauvegardes
find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -delete

Vous pouvez configurer ce script en tant que tâche cron quotidienne :

# Quotidiennement à 02h00
0 2 * * * /opt/openvle/backup.sh

Calendrier de sauvegarde recommandé

FréquenceMesure
QuotidienDumps de base de données (MariaDB + MongoDB)
Avant chaque mise à jourSauvegarde manuelle de tous les composants