Skip to content

Restaurations Planifiées

Cette page décrit comment automatiser la restauration de bases de données PostgreSQL via des CRONs Muppy, typiquement pour rafraîchir quotidiennement un environnement de développement ou de staging.

Task de Restauration

La Task mpy_pg_restore du script muppy_postgresql_base.scripts.pg_dump permet de restaurer un pg_dump sur un Cluster PostgreSQL.

Paramètres clés pour l'automatisation

Paramètre Description
source_database_obj Si fourni (au lieu de pg_dump_obj), Muppy restaure automatiquement le dernier dump de cette database
force_restore Si True, écrase la database existante (avec protections)
qualifier_obj Assigne automatiquement ce qualifier à la database restaurée
pg_cluster_obj Optionnel si un seul cluster existe sur l'hôte

Cas d'usage: Refresh quotidien d'un environnement de dev

Objectif: Chaque jour, restaurer le dernier backup de production sur l'environnement de développement.

Configuration du Task Run

  1. Créer un Task Run avec la Task mpy_pg_restore
  2. Configurer les paramètres:
  3. source_database_obj: La database de production (son dernier dump sera utilisé)
  4. db_name: Le nom de la database de destination (ex: "myapp_dev")
  5. force_restore: True (pour écraser la database existante chaque jour)
  6. qualifier_obj: Le qualifier "dev" ou "staging"

Protections contre les erreurs

Le système inclut plusieurs protections:

  1. Protection des databases de production: Impossible d'écraser une database ayant un qualifier "prod"
  2. Qualifier requis pour force_restore: Une database sans qualifier ne peut pas être écrasée (sauf si qualifier_obj est fourni)
  3. Interdiction de créer des bases "prod": Le paramètre qualifier_obj ne peut pas être un qualifier de catégorie "prod"

Flux d'exécution

mpy_pg_restore(source_database_obj=prod_db, force_restore=True, qualifier_obj=dev_qualifier)
├── Récupère le dernier dump de prod_db
├── Vérifie que la DB destination n'est pas "prod"
├── Télécharge le dump depuis S3
├── Coupe les connexions à la DB existante
├── Drop et recrée la database
├── Restaure les données
└── Assigne le qualifier "dev" à la database

Planification via CRON

Suivre la même procédure que pour les Backups Planifiés:

  1. Tester le Task Run avec "Launch as Job"
  2. Cliquer sur "Create CRON"
  3. Configurer la récurrence (ex: tous les jours à 3h du matin)

Restauration simple (sans force_restore)

Pour une restauration ponctuelle sans écraser de database existante, utilisez plutôt le Wizard de Restauration ou omettez le paramètre force_restore.