DBAtlas · Atlas d'exploitation des bases de données

Sauvegarde et PITR avec pg_basebackup + archivage WAL (sans pgBackRest)

PostgreSQLNiveau: IntermédiaireDurée: 45–90 min

Sauvegarde physique avec les outils de PostgreSQL, sans logiciel supplémentaire : archivage continu des WAL avec archive_command, base backup nocturne avec pg_basebackup, rétention avec pg_archivecleanup. Restauration à un instant / une transaction / un restore point (recovery.signal, restore_command, recovery_target_*), timelines et exercice de restauration régulier ; au final, un flux de WAL archivé, une sauvegarde nocturne et un chemin de retour éprouvé. Alternatives : si vous avez besoin de sauvegardes incrémentales/parallèles/chiffrées, de S3 et d'une gestion de rétention intégrée, suivez le guide pgBackRest ; pour déplacer une table/une base ou récupérer une seule table, utilisez une sauvegarde logique (pg_dump, sans PITR).

Topologie: 1 serveur ; en streaming ou avec Patroni, le répertoire d'archive est partagé par tous les nodes (NFS)

Scénarios

  • Mettre en place l'archivage WAL et le base backup nocturne — Mise en place initiale : archivage continu des WAL avec archive_command, script pg_basebackup, planification dans /etc/cron.d, rétention et nettoyage des WAL. archive_mode exige un bref redémarrage, une seule fois.
  • Revenir à un point précis (PITR : heure, xid, LSN, restore point) — Des données ont été supprimées/modifiées par erreur (DROP, DELETE, TRUNCATE) ou le serveur/disque a été perdu : le base backup est restauré et les WAL archivés sont rejoués jusqu'à la cible. Tout le cluster est arrêté et revient à la cible ; tout ce qui suit la cible est perdu.
  • Exercice de restauration (dans un répertoire distinct, sans toucher à la production) — Pour prouver que la sauvegarde se restaure réellement (une fois par mois recommandé) : le dernier base backup est vérifié (pg_verifybackup), extrait dans un répertoire distinct et démarré sur un port distinct avec l'archive ; la durée (RTO) est mesurée. La production n'est pas touchée.
  • Nettoyer les anciens base backups et l'archive WAL — Le disque d'archive ou de sauvegarde se remplit, ou la rétention a changé : les anciens base backups sont supprimés et pg_archivecleanup retire les WAL antérieurs à la plus ancienne sauvegarde (d'abord en dry run). La base reste ouverte.

Avant de commencer

  • PostgreSQL … est installé et démarré (pg-install) ; répertoire de données ….
  • … et … se trouvent sur un disque/partage NFS distinct du disque de données, monté de façon permanente (fstab)… et au même chemin sur tous les serveurs PostgreSQL (après un failover, le nouveau primary doit écrire dans la même archive)…. Espace : (nombre de sauvegardes conservées + 1) × volume des données compressées + volume WAL quotidien × jours de rétention.
  • Aucun autre outil d'archive/de sauvegarde (pgBackRest, Barman, WAL-G) n'est configuré ; si deux outils envoient les mêmes WAL à des endroits différents, les deux restent incomplets.
  • Les horloges sont synchronisées par NTP (l'heure cible du PITR est interprétée selon l'horloge du serveur).
  • Une courte fenêtre de redémarrage est disponible pour le changement de archive_mode.
  • Les applications sont arrêtées ; la perte de toutes les modifications postérieures à la cible a été acceptée.… Les standbys/replicas seront reconstruits après la restauration.…

Phases du guide

  • Mise en place de l'archive WAL et du base backup — Préparer les répertoires d'archive et de sauvegarde · Écrire le script d'archivage WAL · Rendre le script exécutable et le tester · Écrire les paramètres d'archivage PostgreSQL · Redémarrer PostgreSQL · Écrire les paramètres d'archivage dans Patroni (edit-config) …
  • Exercice de restauration — Préparer le répertoire de l'exercice et choisir la dernière sauvegarde · Extraire et vérifier la sauvegarde (pg_verifybackup) · Démarrer l'instance d'exercice avec l'archive · Vérifier les données · Arrêter et nettoyer l'instance d'exercice
  • Rétention et nettoyage des WAL — Sauvegardes, taille de l'archive et plus ancien WAL nécessaire · Supprimer les base backups hors rétention · Afficher d'abord le nettoyage des WAL en dry run · Nettoyer l'archive WAL · Vérifier que l'archivage fonctionne toujours
Ouvrir le plan pas à pas adapté à votre environnement →