Sauvegarde locale de la base de données et des médias¶
Une instance Sites Conformes conserve ses données à deux endroits distincts :
la base PostgreSQL : les pages, les comptes, les réglages, bref tout le contenu éditorial et la configuration ;
les fichiers médias : les images et documents téléversés, stockés selon le mode choisi — système de fichiers, S3, ou base PostgreSQL (voir Stockage des médias en base de données (DB Storage)).
Sauvegarder ou transférer « les données » d’un site signifie donc toujours manipuler ces deux éléments ensemble : une base sans ses médias (ou l’inverse) donne un site incomplet.
Le projet fournit un ensemble de scripts pour sauvegarder, restaurer et transférer ces données. Ils s’adressent surtout au travail en local (développement) : se prémunir avant une manipulation risquée, ou récupérer les données de production pour reproduire un comportement observé en ligne.
Note
Ces opérations passent par des recettes just regroupées dans la catégorie
« Dev DB and medias management ». Tapez just pour afficher la liste complète.
Deux scénarios¶
La plupart des besoins se ramènent à l’un de ces deux cas :
Gérer une sauvegarde locale : vous faites une copie de votre base et de vos médias de dev avant une opération risquée (test d’une migration, import massif…), pour pouvoir revenir en arrière. →
backup-local, puis au besoinrestore-local.Récupérer les données de production : vous rapatriez en local l’état exact de la production, par exemple pour reproduire un bug. →
descend-prod, puisrestore-prod.
Important
Télécharger n’est pas restaurer. descend-prod télécharge
la dernière sauvegarde de production dans votre répertoire de sauvegardes ;
c’est restore-prod qui charge ensuite ces données dans votre base et vos
médias locaux.
Les deux étapes sont séparées pour que vous puissiez inspecter le
téléchargement avant de l’appliquer. Inversement, cela évite de répéter
plusieurs fois l’opération de téléchargement (qui peut être longue)
en effectuant des tests de restauration.
Où vivent les sauvegardes ?¶
En production (Scalingo) : la base PostgreSQL est sauvegardée automatiquement par la plateforme : vous pouvez consulter et télécharger ces sauvegardes depuis l’interface de l’addon PostgreSQL. Les médias, eux, résident sur le stockage S3.
En local : les sauvegardes et les téléchargements sont écrits dans le répertoire défini par la variable
BACKUP_DIR.
Prérequis et configuration¶
Pour les sauvegardes locales, définissez BACKUP_DIR dans votre .env,
en pointant vers un répertoire situé hors du projet Django pour ne pas
risquer de committer une sauvegarde par erreur.
Pour manipuler les données de production, il faut en plus :
la CLI Scalingo (pour récupérer la dernière sauvegarde de base de données) : voir installation et connexion ;
le paquet rclone (
apt install rclone) pour récupérer les fichiers médias depuis le S3 ;les variables suivantes dans votre
.env:
PROD_APP= # nom de l’app Scalingo, par ex. sites-conformes
PROD_DB_NAME= # nom de la base dans Scalingo, par ex. sites_facil_123
PROD_S3_BUCKET_NAME=
PROD_S3_LOCATION=
RCLONE_CONFIG_MYS3_REGION_NAME=
RCLONE_CONFIG_MYS3_ENDPOINT=
RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=
RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=
RCLONE_CONFIG_MYS3_PROVIDER=Other
RCLONE_CONFIG_MYS3_TYPE="s3"
Le préfixe RCLONE_CONFIG_MYS3_* permet à rclone de récupérer automatiquement
ces paramètres depuis l’environnement.
Sauvegarder et restaurer les données locales¶
Faire une sauvegarde de la base et des médias de votre instance locale :
just backup-local
La restaurer plus tard (base et médias) :
just restore-local
Vous pouvez ne cibler qu’une des deux moitiés avec just restore-local-db
ou just restore-local-medias.
Pour repartir d’une base vide, just clear-local-db.
Important
Faites toujours un just backup-local avant de remplacer vos données locales
par une sauvegarde ou par les données de production,
sinon vos données de dev actuelles sont perdues.
Récupérer les données de production¶
Télécharger la dernière sauvegarde de production (base + médias) :
just descend-prod
Puis la charger dans votre environnement local :
just restore-prod
Là encore, des variantes permettent de ne traiter qu’une moitié :
descend-prod-db / descend-prod-medias pour le téléchargement,
restore-prod-db / restore-prod-medias pour la restauration.
Note
Après avoir chargé des données de production en local,
lancez python manage.py set_config pour réécrire l’HOST_URL en base :
sans cela, votre site local continuerait de pointer vers le domaine de production.
Aide-mémoire des recettes¶
Recette |
Effet |
|---|---|
|
Sauvegarde la base et les médias locaux dans |
|
Restaure la dernière sauvegarde locale (base + médias) |
|
Idem, base ou médias uniquement |
|
Vide la base locale |
|
Télécharge la dernière sauvegarde de production (base + médias) |
|
Idem, base ou médias uniquement |
|
Restaure les données de production téléchargées (base + médias) |
|
Idem, base ou médias uniquement |