Skip to main content

Sauvegarde et restauration d'un serveur Medulla

La mise en place d'une politique de sauvegarde régulière est indispensable pour permettre la restauration d'une plateforme Medulla en cas de panne, de corruption, de perte du serveur ou d'erreur lors d'une opération de maintenance.

Pour une installation Medulla On-Premise, il est recommandé de mettre en place plusieurs niveaux de protection :

  • une sauvegarde complète du serveur ou de la machine virtuelle ;
  • un dump régulier de l'instance MariaDB ;
  • une sauvegarde des principaux répertoires de configuration et de données Medulla.

Important :
Toutes les commandes présentées dans cette documentation doivent être exécutées avec le compte root.

Recommandation :
Lorsque votre infrastructure le permet, la sauvegarde complète du serveur ou de la machine virtuelle doit rester la méthode de sauvegarde principale. Les dumps MariaDB et les archives des répertoires Medulla constituent des protections complémentaires permettant notamment de faciliter une restauration sur un nouveau serveur.


1. Sauvegarde complète du serveur Medulla

Lorsque Medulla est installé sur une machine virtuelle, il est recommandé d'utiliser la solution de sauvegarde de votre infrastructure de virtualisation afin de réaliser des sauvegardes régulières de l'ensemble de la machine.

Dans le cas d'un serveur physique, utilisez votre solution habituelle de sauvegarde système.

La sauvegarde doit être stockée sur une infrastructure différente du serveur Medulla.

Une sauvegarde doit notamment être réalisée avant :

  • une mise à jour de Medulla ;
  • une modification importante de la configuration ;
  • une intervention sur MariaDB ;
  • une modification importante du système ;
  • une opération de migration.

Important :
Un snapshot de machine virtuelle peut être utile avant une opération de maintenance, mais ne doit pas constituer à lui seul votre politique de sauvegarde. Une véritable sauvegarde doit être conservée indépendamment du serveur Medulla.


2. Sauvegarde des bases de données MariaDB

Medulla utilise MariaDB pour stocker une partie importante de ses données.

En complément de la sauvegarde du serveur, il est recommandé de réaliser un dump régulier de l'ensemble de l'instance MariaDB.

Sauvegarder l'ensemble de l'instance permet d'éviter de maintenir manuellement une liste des différentes bases nécessaires à Medulla.

Créer manuellement un dump MariaDB

Connectez-vous au serveur avec le compte root puis exécutez :

mkdir -p /var/backups/medulla

mariadb-dump --all-databases \
    --single-transaction \
    --routines \
    --events \
    --triggers \
    --hex-blob \
    | gzip > /var/backups/medulla/medulla_mariadb_$(date +%Y%m%d_%H%M%S).sql.gz

Cette commande permet notamment de sauvegarder :

  • l'ensemble des bases MariaDB ;
  • les tables et leurs données ;
  • les procédures et fonctions stockées ;
  • les événements MariaDB ;
  • les triggers.

L'option --single-transaction permet d'obtenir une sauvegarde cohérente des tables transactionnelles telles que les tables InnoDB sans maintenir un verrou global sur celles-ci pendant toute la durée du dump.

Un fichier similaire au suivant sera généré :

/var/backups/medulla/medulla_mariadb_20260827_150000.sql.gz

Important :
Les dumps MariaDB peuvent contenir des informations sensibles. Ils doivent être protégés et transférés vers votre infrastructure de sauvegarde.


3. Automatiser la sauvegarde MariaDB

Sur un serveur en production, il est recommandé d'automatiser la création des dumps MariaDB.

Vous pouvez par exemple créer le script :

/usr/local/sbin/backup_medulla_mariadb.sh

Avec le contenu suivant :

#!/bin/bash

set -e

BACKUP_DIR="/var/backups/medulla"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

mariadb-dump --all-databases \
    --single-transaction \
    --routines \
    --events \
    --triggers \
    --hex-blob \
    | gzip > "$BACKUP_DIR/medulla_mariadb_${DATE}.sql.gz"

find "$BACKUP_DIR" \
    -type f \
    -name "medulla_mariadb_*.sql.gz" \
    -mtime +7 \
    -delete

Rendez ensuite le script exécutable :

chmod 700 /usr/local/sbin/backup_medulla_mariadb.sh

Vous pouvez le tester manuellement :

/usr/local/sbin/backup_medulla_mariadb.sh

Information :
La conservation locale pendant 7 jours présentée dans cet exemple peut être adaptée à votre politique de sauvegarde. Les sauvegardes doivent également être transférées vers une infrastructure externe.


4. Sauvegarde des répertoires Medulla

En complément du dump MariaDB et de la sauvegarde complète du serveur, les principaux répertoires contenant la configuration, les données et certains composants Medulla peuvent être sauvegardés.

Les répertoires concernés sont :

/etc/mmc
/etc/pulse-xmpp-agent
/etc/pulse-xmpp-agent-substitute
/var/lib/pulse2
/usr/lib/python3/dist-packages/pulse
/usr/lib/python3/dist-packages/mmc

Important :
La sauvegarde doit impérativement préserver les propriétaires, groupes, permissions et attributs des fichiers. Ces informations sont nécessaires pour permettre une restauration correcte.


5. Créer une archive des fichiers Medulla

Connectez-vous avec le compte root.

Créez le répertoire de sauvegarde si nécessaire :

mkdir -p /var/backups/medulla

Vous pouvez ensuite créer une archive avec :

tar --acls --xattrs -czpf \
/var/backups/medulla/medulla_files_$(date +%Y%m%d_%H%M%S).tar.gz \
/etc/mmc \
/etc/pulse-xmpp-agent \
/etc/pulse-xmpp-agent-substitute \
/var/lib/pulse2 \
/usr/lib/python3/dist-packages/pulse \
/usr/lib/python3/dist-packages/mmc

Un fichier similaire au suivant sera généré :

/var/backups/medulla/medulla_files_20260827_150000.tar.gz

L'utilisation des options --acls et --xattrs permet de conserver les ACL et attributs étendus lors de la création de l'archive.

Conseil :
Une fois l'archive créée, transférez-la vers votre infrastructure de sauvegarde. Il est déconseillé de conserver la seule copie de sauvegarde sur le serveur Medulla lui-même.


6. Base ejabberd

La base ejabberd ne nécessite pas de procédure spécifique de sauvegarde/restauration dans le cadre de cette procédure.

Elle est générée automatiquement au lancement de Medulla.


7. Restauration des fichiers Medulla

Les fichiers précédemment archivés peuvent être restaurés, notamment dans le cadre de la reconstruction d'un serveur Medulla.

La restauration doit être réalisée avec le compte root.

Exemple :

tar --acls --xattrs -xzpf medulla_files_YYYYMMDD_HHMMSS.tar.gz -C /

Attention :
La restauration des répertoires Medulla ne constitue pas, à elle seule, une procédure complète de reconstruction d'un serveur. La version du système, la version de Medulla, les bases MariaDB et les fichiers restaurés doivent être cohérents entre eux.

Dans le cadre d'une restauration sur un nouveau serveur, il est recommandé d'utiliser une version de Medulla identique à celle correspondant à la sauvegarde avant de restaurer les données.


8. Restauration de MariaDB

Une fois l'environnement MariaDB prêt, un dump précédemment généré peut être restauré.

Avec le compte root :

gunzip -c medulla_mariadb_YYYYMMDD_HHMMSS.sql.gz | mariadb

Attention :
Un dump réalisé avec --all-databases contient l'ensemble des bases sauvegardées. Sa restauration doit donc être réalisée uniquement dans le cadre d'une procédure de restauration maîtrisée.


9. Vérifier les sauvegardes

La génération d'un fichier de sauvegarde ne garantit pas à elle seule qu'une restauration sera possible.

Il est recommandé de vérifier régulièrement :

  • que les sauvegardes sont correctement exécutées ;
  • que les fichiers générés ne sont pas vides ;
  • que les archives TAR sont lisibles ;
  • que les dumps MariaDB sont exploitables ;
  • que les sauvegardes sont correctement transférées vers un système externe ;
  • que plusieurs générations de sauvegardes sont disponibles ;
  • qu'une procédure de restauration a été testée.

Pour vérifier le contenu d'une archive Medulla sans l'extraire :

tar -tzf medulla_files_YYYYMMDD_HHMMSS.tar.gz

Pour vérifier qu'un dump compressé n'est pas corrompu :

gzip -t medulla_mariadb_YYYYMMDD_HHMMSS.sql.gz

Si la commande ne retourne aucune erreur, l'intégrité de la compression gzip est correcte.


10. Fréquence des sauvegardes

La fréquence exacte doit être adaptée aux contraintes et à la politique de sauvegarde de votre organisation.

Élément Recommandation
Serveur / VM Medulla Sauvegarde régulière
MariaDB Dump automatisé régulier
Répertoires Medulla Sauvegarde régulière
Avant une mise à jour Medulla Sauvegarde fortement recommandée
Avant une modification importante Sauvegarde fortement recommandée

11. Où stocker les sauvegardes ?

Les sauvegardes ne doivent pas être conservées uniquement sur le serveur Medulla.

Il est recommandé de les transférer automatiquement vers :

  • un serveur de sauvegarde ;
  • une solution de sauvegarde centralisée ;
  • un stockage distant sécurisé ;
  • ou toute autre infrastructure prévue par la politique de sauvegarde de votre organisation.

Important :
Une panne ou une perte complète du serveur Medulla entraînerait également la perte des sauvegardes si celles-ci étaient uniquement stockées dans /var/backups/medulla.


12. Résumé

Élément Sauvegarde recommandée
Serveur Medulla Backup complet du serveur ou de la VM
MariaDB Dump complet régulier avec mariadb-dump
Configuration MMC /etc/mmc
Configuration XMPP /etc/pulse-xmpp-agent
Configuration XMPP Substitute /etc/pulse-xmpp-agent-substitute
Données Pulse /var/lib/pulse2
Composants Pulse /usr/lib/python3/dist-packages/pulse
Composants MMC /usr/lib/python3/dist-packages/mmc
Base ejabberd Générée automatiquement au lancement de Medulla
Droits nécessaires root

Recommandation :
Pour assurer la restauration d'une plateforme Medulla On-Premise, mettez en place une sauvegarde complète et régulière du serveur, complétée par des dumps réguliers de MariaDB et une sauvegarde des principaux répertoires Medulla en conservant leurs permissions et attributs. Les sauvegardes doivent être externalisées et leur restauration testée régulièrement.