Pour les environnements de production, nous recommandons fortement d'utiliser une version hébergée de PostgreSQL auprès de votre fournisseur cloud. Cette approche offre plusieurs avantages :
# Configuration minimale recommandée
Instance Type: db.t3.medium
Storage: 100 GB
Multi-AZ: Enabled
Version: PostgreSQL 14 ou supérieure
# Configuration minimale recommandée
Machine Type: db-g1-small
Storage: 100 GB
High Availability: Enabled
Version: PostgreSQL 14 ou supérieure
# Configuration minimale recommandée
Compute: General Purpose, 2 vCores
Storage: 100 GB
Version: PostgreSQL 14 ou supérieure
Pour le développement local, vous pouvez installer PostgreSQL directement sur votre machine.
docker-compose.yml :version: '3.8'
services:
postgres:
image: postgres:14
environment:
POSTGRES_USER: devana
POSTGRES_PASSWORD: devana_password
POSTGRES_DB: devana
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
command:
- "postgres"
- "-c"
- "max_connections=1000"
- "-c"
- "shared_buffers=256MB"
volumes:
postgres_data:
docker-compose up -d
# Installation
sudo apt update
sudo apt install postgresql-14
# Démarrage du service
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Création de l'utilisateur et de la base de données
sudo -u postgres psql -c "CREATE USER devana WITH PASSWORD 'devana_password';"
sudo -u postgres psql -c "CREATE DATABASE devana OWNER devana;"
# Installation
brew install postgresql@14
# Démarrage du service
brew services start postgresql@14
# Création de l'utilisateur et de la base de données
createuser -s devana
createdb -O devana devana
Ajoutez ces paramètres dans votre postgresql.conf :
# Connexions
max_connections = 1000
shared_buffers = 256MB
# Performance
effective_cache_size = 1GB
maintenance_work_mem = 128MB
work_mem = 8MB
# WAL
wal_level = replica
max_wal_size = 1GB
min_wal_size = 80MB
# Query Planner
random_page_cost = 1.1
effective_io_concurrency = 200
Configurez votre connexion dans les variables d'environnement de Devana :
DATABASE_URL=postgresql://devana:devana_password@localhost:5432/devana
Pour la production, utilisez l'URL de connexion fournie par votre service cloud.
L'initialisation et les migrations de la base de données sont gérées automatiquement par le service API de Devana au démarrage. Aucune action manuelle n'est nécessaire.
Note: Assurez-vous simplement que la base de données est créée et accessible via l'URL de connexion fournie dans les variables d'environnement.
Une politique de sauvegarde robuste doit couvrir les aspects suivants :
Fréquence et rétention
| Type de sauvegarde | Fréquence | Rétention minimale |
|---|---|---|
| Sauvegarde complète (full) | Quotidienne | 30 jours |
| Sauvegarde incrémentale / WAL archiving | Continue (temps réel) | 7 jours |
| Sauvegarde longue durée | Hebdomadaire | 90 jours minimum |
Objectifs de reprise
Définissez et documentez vos objectifs de reprise avant la mise en production :
Recommandation : documentez vos RPO/RTO cibles et validez-les par des tests réguliers.
Stockage des sauvegardes
Les sauvegardes qui ne sont pas testées ne sont pas des sauvegardes.
Mettez en place une procédure de test de restauration régulière :
# Exemple de test de restauration sur un environnement isolé
createdb -U devana devana_restore_test
pg_restore -U devana -d devana_restore_test -v backup.dump
# Vérification de l'intégrité
psql -U devana -d devana_restore_test -c "SELECT count(*) FROM information_schema.tables WHERE table_schema = 'public';"
# Nettoyage après test
dropdb -U devana devana_restore_test
# Sauvegarde
pg_dump -U devana -d devana -F c -b -v -f backup.dump
# Restauration
pg_restore -U devana -d devana -v backup.dump
-- Taille des tables
SELECT schemaname, relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_stat_user_tables
ORDER BY pg_total_relation_size(relid) DESC;
-- Connexions actives
SELECT * FROM pg_stat_activity WHERE state = 'active';
-- Performances des index
SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read
FROM pg_stat_user_indexes
ORDER BY idx_scan DESC;
Pour toute question ou problème :