📄 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.
| Composant | Méthode de Sauvegarde | État/Rôle |
| Schéma de base | Migrations SQL | Contrôle de version (Git) |
| Données | Backups automatiques + pg_dump | Sauvegarde opérationnelle (Locale/Cloud) |
| Fichiers (Storage) | Téléchargement S3 / Outils S3 | Sauvegarde des objets (Hors base de données) |
| Fonctions (Edge) | Code source | Contrô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.
- Accéder au Dashboard Supabase.
- Naviguer vers Database → Backups.
- 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_dumpinstallé (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 (auth, storage, 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ément | Action 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 Projet | Documenter et stocker les secrets d’API (STRIPE_SECRET_KEY, N8N_WEBHOOK_URL, etc.) dans un gestionnaire de secrets sécurisé (ex : 1Password, Vault). |
| Edge Functions | Maintenir le code source des fonctions dans un dépôt Git pour un redéploiement facile. |
| Paramètres Auth/API | Les 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. |

