Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
Sauvegarde Serveurs dédiés

Sauvegarde et récupération des bases de données PostgreSQL : Un guide complet pour les utilisateurs d’AlexHost

Pourquoi la stratégie de sauvegarde PostgreSQL est plus importante que vous ne le pensez

La perte de données n’est pas un risque hypothétique — c’est une certitude opérationnelle que chaque administrateur de base de données affrontera à un moment donné. Les défaillances matérielles, les suppressions accidentelles, les transactions corrompues et les attaques par ransomware peuvent tous paralyser un environnement de production en quelques secondes. Pour les utilisateurs de PostgreSQL, avoir une stratégie de sauvegarde robuste, testée et automatisée est la différence entre un incident mineur et une défaillance commerciale catastrophique.

AlexHost Dedicated Servers fournissent une base idéale pour héberger et protéger les bases de données PostgreSQL. Avec un stockage NVMe SSD de classe entreprise offrant un débit d’E/S exceptionnel, un accès root complet pour un contrôle de configuration complet, et une protection DDoS intégrée, AlexHost vous offre les performances d’infrastructure et la posture de sécurité que les charges de travail de base de données sérieuses exigent.

Que vous exécutiez une plateforme e-commerce à fort trafic, une application SaaS, une installation WordPress soutenue par une base de données relationnelle, ou un système d’entreprise personnalisé, ce guide vous guide à travers chaque méthode majeure de sauvegarde et de récupération PostgreSQL — des simples vidages SQL à la récupération avancée à un moment donné (PITR) — tous optimisés pour les environnements de production.

1. Comprendre les options de sauvegarde PostgreSQL

PostgreSQL est livré avec plusieurs mécanismes de sauvegarde matures et bien documentés. Le choix du bon dépend de la taille de votre base de données, de vos objectifs de temps de récupération (RTO), de vos objectifs de point de récupération (RPO) et de votre tolérance à la complexité opérationnelle.

MéthodeIdéale pourAvantagesInconvénients
SQL Dump (pg_dump)Petites à moyennes bases de donnéesSimple, portable, lisible par l’hommeLent pour les très grandes BD
Custom Format DumpMoyennes à grandes bases de donnéesCompressé, restauration parallèleBinaire, nécessite pg_restore
File System SnapshotTrès grandes bases de donnéesRapide, cohérentNécessite une expertise, la BD doit être au repos ou compatible avec les snapshots
PITR (WAL Archiving)Systèmes de production critiquesRécupération granulaire à un point dans le tempsConfiguration et maintenance complexes

Comprendre ces compromis avant de commencer est essentiel. La plupart des environnements de production bénéficient de la combinaison d’au moins deux approches — par exemple, des dumps au format personnalisé chaque nuit aux côtés de l’archivage WAL continu pour une capacité de récupération granulaire.

2. Conditions préalables et exigences de privilèges

Avant d’exécuter toute opération de sauvegarde, confirmez que les conditions préalables suivantes sont en place :

Privilèges utilisateur :

  • Vous devez être un superutilisateur PostgreSQL ou le propriétaire de la base de données cible pour effectuer une sauvegarde complète.
  • Pour pg_dumpall, les privilèges de superutilisateur sont obligatoires.

Vérifiez votre version PostgreSQL :

psql --version

Vérifiez l’espace disque disponible avant la sauvegarde :

df -h /var/lib/postgresql/

Assurez-vous que votre destination de sauvegarde dispose d’un espace libre suffisant — au minimum 1,5× la taille de la base de données en cours de sauvegarde pour tenir compte des fichiers temporaires et de la surcharge de compression.

Connectez-vous à votre serveur via SSH :

ssh root@your-server-ip

Si vous utilisez un plan VPS Hosting, vous aurez un accès SSH complet et la possibilité d’installer, configurer et gérer PostgreSQL sans restriction.

3. Méthode 1 — SQL Dump avec pg_dump

L’utilitaire pg_dump est l’outil de sauvegarde PostgreSQL le plus couramment utilisé. Il produit un snapshot cohérent d’une seule base de données, même pendant que la base de données est activement utilisée. La sortie est un script SQL en texte brut qui peut être examiné, édité et rejoué sur n’importe quelle installation PostgreSQL compatible.

Étape 1 : Ouvrir un Terminal et Accéder à Votre Serveur

ssh root@your-alexhost-server-ip

Étape 2 : Exécuter la Commande pg_dump

pg_dump -U username -W -F p database_name > /backups/backup_file.sql

Détail des paramètres :

ParamètreDescription
-U usernameL’utilisateur PostgreSQL effectuant la sauvegarde
-WDemander le mot de passe de manière interactive
-F pFormat de sortie : p = texte SQL brut
database_nameLe nom de la base de données à sauvegarder
> /backups/backup_file.sqlRediriger la sortie vers un fichier

Exemple pratique :

pg_dump -U postgres -W -F p my_production_db > /backups/my_production_db_$(date +%Y%m%d_%H%M%S).sql

> Conseil Pro : Ajouter un horodatage en utilisant $(date +%Y%m%d_%H%M%S) à votre nom de fichier de sauvegarde garantit que vous ne remplacerez jamais accidentellement une sauvegarde précédente et crée une archive naturellement chronologique.

Étape 3 : Vérifier le Fichier de Sauvegarde

ls -lh /backups/
head -50 /backups/my_production_db_*.sql

Le fichier doit commencer par des commentaires d’en-tête PostgreSQL et des déclarations SET, confirmant qu’une sauvegarde valide a été créée.

4. Méthode 2 — Sauvegarde de toutes les bases de données avec pg_dumpall

Lorsque vous devez sauvegarder chaque base de données dans une instance PostgreSQL — y compris les objets globaux tels que les rôles et les tablespaces — pg_dumpall est l’outil approprié.

pg_dumpall -U postgres -W > /backups/all_databases_$(date +%Y%m%d).sql

Cette commande exporte :

  • Toutes les bases de données
  • Tous les rôles (utilisateurs et groupes)
  • Tous les tablespaces
  • Toute la configuration globale

Important : Le fichier de sortie de pg_dumpall peut être très volumineux sur les serveurs occupés. Assurez-vous que votre partition de sauvegarde dispose d’un espace adéquat et envisagez de compresser la sortie immédiatement :

pg_dumpall -U postgres | gzip > /backups/all_databases_$(date +%Y%m%d).sql.gz

5. Méthode 3 — Sauvegardes de format personnalisé pour les grandes bases de données

Pour les bases de données de production dépassant quelques gigaoctets, le format personnalisé (-F c) est fortement recommandé par rapport aux vidages SQL simples. Les sauvegardes de format personnalisé sont :

  • Compressées par défaut — réduisant considérablement les exigences de stockage
  • Plus rapides à restaurer — supportant les opérations de restauration parallèles avec le drapeau -j
  • Restaurables sélectivement — vous permettant de restaurer des tables ou des schémas individuels

Création d’une sauvegarde de format personnalisé

pg_dump -U postgres -W -F c my_production_db > /backups/my_production_db_$(date +%Y%m%d).dump

Création d’une sauvegarde de format répertoire compressé (supporte le parallélisme)

pg_dump -U postgres -W -F d -j 4 -f /backups/my_production_db_dir my_production_db
ParamètreDescription
-F dFormat répertoire — un fichier par table
-j 4Utiliser 4 processus de travail parallèles
-f /path/to/dirRépertoire de sortie (ne doit pas exister encore)

Cette approche réduit considérablement la durée de sauvegarde sur les serveurs multi-cœurs, ce qui la rend idéale pour les environnements de serveur dédié haute performance disponibles chez AlexHost.

6. Restauration à partir de vidages SQL

Restaurer une seule base de données à partir d’un vidage SQL brut

D’abord, assurez-vous que la base de données cible existe. Si ce n’est pas le cas, créez-la :

psql -U postgres -c "CREATE DATABASE my_restored_db;"

Ensuite, restaurez :

psql -U postgres -d my_restored_db -f /backups/my_production_db_backup.sql

Détail des paramètres :

ParamètreDescription
-U postgresSuperutilisateur PostgreSQL
-d my_restored_dbBase de données cible pour la restauration
-f /path/to/file.sqlChemin d’accès au fichier de vidage SQL

Surveiller la progression de la restauration

Pour les fichiers SQL volumineux, vous pouvez surveiller la progression en utilisant pv :

pv /backups/my_production_db_backup.sql | psql -U postgres -d my_restored_db

7. Restauration à partir de vidages au format personnalisé

Les vidages au format personnalisé nécessitent l’utilitaire pg_restore plutôt que psql.

Restauration de base

pg_restore -U postgres -d my_restored_db /backups/my_production_db.dump

Restauration et création automatique de la base de données

Utilisez l’indicateur -C pour instruire pg_restore de créer la base de données avant de la remplir :

pg_restore -U postgres -C -d postgres /backups/my_production_db.dump

Restauration parallèle pour une récupération plus rapide

pg_restore -U postgres -d my_restored_db -j 4 /backups/my_production_db_dir/

L’utilisation de -j 4 avec une sauvegarde au format répertoire peut réduire le temps de restauration jusqu’à 75 % sur un serveur quad-core — un avantage significatif pour minimiser les temps d’arrêt lors de la récupération après sinistre.

Restaurer une table spécifique uniquement

pg_restore -U postgres -d my_restored_db -t orders /backups/my_production_db.dump

Cette capacité granulaire est l’un des principaux avantages du format personnalisé par rapport aux vidages SQL simples.

8. Méthode 4 — Archivage continu et récupération à un moment précis (PITR)

PITR est la norme de référence pour les déploiements PostgreSQL critiques. Il vous permet de restaurer votre base de données à n’importe quel moment spécifique — pas seulement la dernière sauvegarde — en relisant les segments Write-Ahead Log (WAL) sur une sauvegarde de base. Ceci est essentiel pour les scénarios où vous devez récupérer d’une erreur logique (comme un DROP TABLE accidentel) qui s’est produit à un horodatage connu.

Étape 1 : Activer l’archivage WAL dans postgresql.conf

Localisez et modifiez votre fichier de configuration PostgreSQL :

nano /etc/postgresql/15/main/postgresql.conf

Ajoutez ou modifiez les directives suivantes :

# Enable WAL archiving
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'

Explication des paramètres :

ParamètreValeurDescription
wal_levelreplicaActive les détails WAL suffisants pour l’archivage
archive_modeonActive le processus d’archivage
archive_command'cp %p /path/%f'Commande shell pour copier les fichiers WAL vers l’archive

Créez le répertoire d’archive et définissez les permissions correctes :

mkdir -p /var/lib/postgresql/wal_archive
chown postgres:postgres /var/lib/postgresql/wal_archive
chmod 700 /var/lib/postgresql/wal_archive

Redémarrez PostgreSQL pour appliquer les modifications :

systemctl restart postgresql

Étape 2 : Effectuer une sauvegarde de base avec pg_basebackup

pg_basebackup -U postgres -D /backups/base_backup -Ft -z -P -Xs
ParamètreDescription
-D /backups/base_backupRépertoire de destination pour la sauvegarde de base
-FtFormat Tar en sortie
-zCompresser avec gzip
-PAfficher la progression
-XsDiffuser WAL pendant la sauvegarde

Étape 3 : Restaurer à un moment précis

Pour restaurer à partir d’une sauvegarde de base et des archives WAL :

  1. Arrêtez PostgreSQL :
systemctl stop postgresql
  1. Effacez le répertoire de données existant :
rm -rf /var/lib/postgresql/15/main/*
  1. Extrayez la sauvegarde de base :
tar -xzf /backups/base_backup/base.tar.gz -C /var/lib/postgresql/15/main/
  1. Créez un recovery.conf (PostgreSQL 11 et antérieures) ou configurez postgresql.conf et créez un fichier recovery.signal (PostgreSQL 12+) :
# For PostgreSQL 12+
touch /var/lib/postgresql/15/main/recovery.signal

Ajoutez à postgresql.conf :

restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
recovery_target_time = '2025-01-15 14:30:00'
recovery_target_action = 'promote'
  1. Définissez la propriété correcte et démarrez PostgreSQL :
chown -R postgres:postgres /var/lib/postgresql/15/main/
systemctl start postgresql

PostgreSQL relira les segments WAL jusqu’à l’horodatage spécifié, puis passera à un état normal de lecture-écriture.

9. Automatiser les sauvegardes avec Cron

Les sauvegardes manuelles ne sont pas fiables. Automatiser votre calendrier de sauvegarde avec cron assure la cohérence et élimine le facteur d’erreur humaine.

Créer un script de sauvegarde

nano /usr/local/bin/pg_backup.sh
#!/bin/bash

# PostgreSQL Automated Backup Script
BACKUP_DIR="/backups/postgresql"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
DB_USER="postgres"
DB_NAME="my_production_db"
RETENTION_DAYS=14

# Create backup directory if it doesn't exist
mkdir -p "$BACKUP_DIR"

# Perform the backup
pg_dump -U "$DB_USER" -F c "$DB_NAME" > "$BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.dump"

# Remove backups older than retention period
find "$BACKUP_DIR" -name "*.dump" -mtime +"$RETENTION_DAYS" -delete

# Log completion
echo "[$TIMESTAMP] Backup of $DB_NAME completed successfully." >> /var/log/pg_backup.log

Rendre le script exécutable :

chmod +x /usr/local/bin/pg_backup.sh

Planifier avec Cron

crontab -e

Ajoutez la ligne suivante pour exécuter une sauvegarde chaque nuit à 2:00 AM :

0 2 * * * /usr/local/bin/pg_backup.sh

Pour les sauvegardes complètes hebdomadaires plus l’archivage WAL incrémental quotidien, combinez ceci avec la configuration PITR décrite dans la section précédente.

10. Sécurisation et stockage des sauvegardes hors site

Une sauvegarde stockée sur le même serveur que votre base de données de production n’est pas une vraie sauvegarde — c’est un point de défaillance unique. Mettez en œuvre les pratiques de sécurité et de stockage hors site suivantes :

Chiffrer les sauvegardes avant le transfert

gpg --symmetric --cipher-algo AES256 /backups/my_production_db.dump

Transférer les sauvegardes vers un emplacement distant avec rsync

rsync -avz --progress /backups/postgresql/ user@remote-backup-server:/remote/backups/postgresql/

Utiliser pg_dump avec SSH Pipe pour une sauvegarde distante directe

pg_dump -U postgres my_production_db | gzip | ssh user@remote-server "cat > /backups/my_production_db_$(date +%Y%m%d).sql.gz"

Règles de pare-feu pour PostgreSQL (UFW)

Limitez l’accès au port PostgreSQL aux adresses IP de confiance uniquement :

ufw allow from 192.168.1.0/24 to any port 5432
ufw deny 5432
ufw enable

Pour les équipes gérant plusieurs projets sur différents niveaux d’hébergement, les plans AlexHost Shared Web Hosting supportent également des outils de gestion de base de données qui peuvent compléter vos flux de travail de sauvegarde pour les projets plus petits.

11. Résumé des meilleures pratiques

La mise en œuvre correcte des sauvegardes PostgreSQL nécessite de la discipline et une approche en couches. Suivez ces meilleures pratiques pour assurer que vos données sont toujours protégées :

PratiqueRecommandation
Fréquence de sauvegardeAu minimum quotidienne ; horaire pour les bases de données à transactions élevées
Formats de sauvegardeUtilisez le format personnalisé (-F c) pour les bases de données > 1 GB
Politique de rétentionConservez 14 sauvegardes quotidiennes, 4 hebdomadaires et 3 mensuelles
VérificationRestaurez dans un environnement de test mensuellement pour valider l’intégrité
ChiffrementChiffrez toujours les sauvegardes avant le transfert hors site
Stockage hors siteMaintenez les sauvegardes dans au moins un emplacement géographiquement séparé
SurveillanceAlertez sur les défaillances des tâches de sauvegarde par e-mail ou système de surveillance
PITR pour la productionActivez l’archivage WAL sur toutes les bases de données critiques
DocumentationMaintenez un runbook écrit pour les procédures de restauration

> Rappel critique : Une sauvegarde qui n’a jamais été testée n’est pas une sauvegarde — c’est une hypothèse. Planifiez des exercices de restauration réguliers et documentez les résultats.

Conclusion : Protégez vos données PostgreSQL en toute confiance sur AlexHost

PostgreSQL offre l’un des ensembles d’outils de sauvegarde et de récupération les plus complets de tout système de base de données open-source. De la simplicité de pg_dump pour les snapshots SQL rapides à la précision chirurgicale de PITR pour la récupération granulaire à un moment précis, vous avez tout ce dont vous avez besoin pour construire une stratégie de protection des données infaillible.

La clé est l’exécution : automatisez vos sauvegardes, vérifiez-les régulièrement, chiffrez-les avant le transfert et stockez-les hors site. Combiné avec la performance et la fiabilité des serveurs dédiés AlexHost — dotés de stockage NVMe, d’un accès root complet et d’une protection DDoS de niveau entreprise — vos bases de données PostgreSQL seront à la fois rapides et résilientes.

Pour les équipes qui ont besoin d’une infrastructure évolutive sans la surcharge de la gestion du matériel nu, l’hébergement VPS AlexHost offre une alternative flexible et rentable avec le même engagement envers la performance et la disponibilité. Et si vous avez besoin de sécuriser vos applications web basées sur une base de données de bout en bout, l’association de votre hébergement avec les certificats SSL AlexHost garantit une communication chiffrée entre votre couche application et vos utilisateurs.

Commencez à mettre en œuvre ces stratégies de sauvegarde dès aujourd’hui. Votre moi futur — face à un incident à 3 heures du matin avec une base de données de production corrompue — vous en remerciera.