📄 Documentation : Stratégie de Sauvegarde (Backup) Supabase

Assurer la continuité des activités en mettant en œuvre une stratégie de sauvegarde redondante et fiable pour la base de données PostgreSQL hébergée par Supabase.

ComposantMéthode de SauvegardeÉtat/Rôle
Schéma de baseMigrations SQLContrôle de version (Git)
DonnéesBackups automatiques + pg_dumpSauvegarde opérationnelle (Locale/Cloud)
Fichiers (Storage)Téléchargement S3 / Outils S3Sauvegarde des objets (Hors base de données)
Fonctions (Edge)Code sourceContrôle de version (Git)

I. Options de Sauvegarde de la Base de Données

La base de données étant une instance PostgreSQL, les méthodes standards pg_dump sont applicables.

1. Sauvegardes Automatiques (Recommandé par Supabase)

Le niveau de service de Supabase détermine la fréquence et la rétention :

  • Plan Pro/Team/Enterprise : Sauvegardes quotidiennes gérées par Supabase.
  • Accès : Disponible via le tableau de bord du projet.
    • https://supabase.com/dashboard/project/[PROJECT_REF]/settings/infrastructure

2. Sauvegarde Manuelle via le Dashboard

Permet un téléchargement immédiat du dump complet du projet.

  1. Accéder au Dashboard Supabase.
  2. Naviguer vers Database → Backups.
  3. Cliquer sur Download backup.

3. Sauvegarde Manuelle via pg_dump (Ligne de Commande)

Cette méthode assure un contrôle total sur les fichiers de sauvegarde.

Prérequis

  • Outil pg_dump installé (via l’installation de PostgreSQL).
  • URL de connexion (URI) récupérée dans Settings → Database du Dashboard.

Commande pour un backup complet (Schémas + Données)

Cette commande sauvegarde le schéma applicatif (public) et les schémas gérés par Supabase (authstorage, etc.), dans un format compressé (-F c).

Bash

pg_dump "postgresql://postgres:[PASSWORD]@db.[PROJECT_REF].supabase.co:5432/postgres" \
  --schema=public \
  --schema=auth \
  --schema=storage \
  -F c -b -v -f "backup_supabase_complet_$(date +%Y%m%d).dump"

Commande pour un backup du Schéma Applicatif (Données Utilisateur)

Utile pour une restauration rapide des données métiers sans les configurations Auth/Storage.

Bash

pg_dump "postgresql://postgres:[PASSWORD]@db.[PROJECT_REF].supabase.co:5432/postgres" \
  --schema=public \
  --data-only \
  -F c -b -v -f "backup_data_public_$(date +%Y%m%d).dump"

II. Stratégie de Sauvegarde Recommandée (Hybride)

Pour une sécurité maximale, une approche combinant les méthodes est retenue.

1. Script de Sauvegarde Automatisé

Ce script s’exécute en tâche planifiée (ex : cron sur l’environnement Ubuntu) pour assurer une sauvegarde locale régulière.

  • Nom du Fichier : backup_supabase.sh
  • But : Sauvegarde complète des données publiques et gestion de la rétention locale.

Bash

# backup_supabase.sh
#!/bin/bash

# Configuration
PROJECT_REF="[VOTRE_REF_PROJET]"
DB_PASSWORD="[VOTRE_MOT_DE_PASSE_DB]"
BACKUP_DIR="./backups"
RETENTION_DAYS=30

# Définition de l'URI de connexion (remplacer les placeholders)
DB_URI="postgresql://postgres:$DB_PASSWORD@db.$PROJECT_REF.supabase.co:5432/postgres"

# Création du répertoire de sauvegarde si non existant
mkdir -p "$BACKUP_DIR"

# Nom du fichier de backup
DATE_FORMAT=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup_db_public_$DATE_FORMAT.dump"

echo "Démarrage de la sauvegarde de la base de données... $DATE_FORMAT"

# Exécution du pg_dump pour le schéma public (données applicatives)
pg_dump "$DB_URI" \
  --schema=public \
  -F c -b -v -f "$BACKUP_FILE"

# Vérification du statut de la sauvegarde
if [ $? -eq 0 ]; then
    echo "✅ Sauvegarde terminée : $BACKUP_FILE"
else
    echo "❌ Échec de la sauvegarde."
    exit 1
fi

# Gestion de la rétention (suppression des fichiers de plus de 30 jours)
find "$BACKUP_DIR" -type f -name "*.dump" -mtime +$RETENTION_DAYS -delete
echo "Nettoyage des anciens backups (retenus: $RETENTION_DAYS jours) terminé."

2. Planification Cron (sur Ubuntu)

Ajouter une entrée dans votre crontab pour exécuter le script quotidiennement à minuit :

Bash

0 0 * * * /chemin/vers/backup_supabase.sh

III. Mise en Garde : Éléments Non Inclus dans la Sauvegarde DB

Les éléments suivants ne sont pas inclus dans un pg_dump de la base de données et doivent être gérés séparément :

ÉlémentAction Requise
Fichiers de Stockage (S3)Utiliser des outils compatibles S3 ou des actions de CI/CD pour télécharger les objets des buckets distants.
Secrets du ProjetDocumenter et stocker les secrets d’API (STRIPE_SECRET_KEYN8N_WEBHOOK_URL, etc.) dans un gestionnaire de secrets sécurisé (ex : 1Password, Vault).
Edge FunctionsMaintenir le code source des fonctions dans un dépôt Git pour un redéploiement facile.
Paramètres Auth/APILes configurations du service d’authentification (ex : providers OAuth, clés d’API, JWT settings) doivent être reconfigurées manuellement lors de la restauration sur un nouveau projet.

Publications similaires