Récupérer une base PostgreSQL à la minute près après une erreur humaine
- Aucun avis
- Avancé
- 2 h 30 min
- 1 000 crédits
Description
Lundi 14 h 07, un script de migration passe en production. Il devait régulariser les paiements du week-end ; sa dernière requête a perdu sa clause WHERE à la relecture. Personne ne le voit. À 15 h 30, le rapprochement bancaire ne tombe plus : toutes les transactions portent un montant à zéro. Vous restaurez le dump de 2 h du matin, le service repart, et treize heures d'encaissements disparaissent avec la bêtise. Les deux premiers labs du parcours ont réglé le temps de remise en service. Celui-ci s'attaque à l'autre chiffre, celui que personne n'avait demandé : la quantité de données perdues. Avec une sauvegarde par jour, aucune restauration, aussi rapide soit-elle, ne descend sous 24 heures de pertes — ce qui n'a pas été sauvegardé n'existe plus. Il faut changer de mécanisme. Vous mettez en place l'archivage continu des journaux de transactions vers S3, puis vous le prouvez sur un incident que vous déclenchez vous-même : vous relancez le script fautif sur une base vivante, et vous la ramenez à la seconde d'avant. Un plan de reprise qu'on n'a jamais répété n'est pas un plan, c'est un espoir. La sandbox démarre avec la production en marche — une transaction toutes les deux secondes — le dump de 02 h 00 déjà sur S3, et l'archivage des WAL à construire.
Compétences travaillées
- Distinguer RTO et RPO, et chiffrer en transactions ce qu'une sauvegarde quotidienne laisse perdre
- Activer l'archivage continu des WAL et les déposer sur S3 depuis un serveur de production
- Reconnaître un archive_command qui échoue en silence avant qu'il ne remplisse le disque
- Produire une sauvegarde de base cohérente avec pg_basebackup pendant que la base écrit
- Restaurer à un instant choisi avec recovery_target_time, sans toucher à la production
- Vérifier une restauration tant qu'elle est encore réversible, puis la promouvoir
- Mesurer le RPO réellement atteint et le comparer à celui de la méthode précédente
Technologies utilisées
- PostgreSQL
- WAL
- pg_basebackup
- pg_ctl
- Amazon S3
- AWS CLI
- Bash
Prérequis
- Avoir fait les deux premiers labs du parcours, ou savoir restaurer un dump PostgreSQL
- Être à l'aise avec la ligne de commande Linux et l'édition d'un fichier de configuration
- Avoir déjà déposé et récupéré un objet sur S3 avec l'AWS CLI
- Savoir lire une sortie de psql et écrire un SELECT avec une clause WHERE
- postgresql
- pitr
- wal
- restauration
- rpo
- Domaine
- Données et analytique
- Niveau
- Avancé
- Durée estimée
- 2 h 30 min
- Sandbox
- 4 h, puis suppression automatique
- Langue
- Français
- Mis à jour le
- 21 septembre 2026