Blog

Blog

Faire du PITR à la main

Dans l'article sur pg_basebackup, j'ai montré comment réaliser une sauvegarde à chaud d'une base PostgreSQL. C'est très bien de faire une sauvegarde mais si on est incapable de la restaurer, il n'y a pas d'intérêt.

La procédure

La procédure pour faire une restauration est assez simple (dans la doc ils ajoutent des étapes non nécessaire sur ma base à but pédagogique, comme modifier pg_hba.conf pour ne plus autoriser les connexions des users):
  1. Arrêter l'instance
  2. Déplacer les données du cluster PGDATA et tous les tablespaces dans un lieu de confiance (oui, la suppression dans ce cas, n'est peut-être pas le bon choix)
  3. Détarrer la sauvegarde et copier les fichiers/répertoires à leur bon emplacement (ce qui peut devenir très pénible si on a différents tablespaces sur des disques différents)
  4. Créer un fichier recovery.conf
  5. Redémarrer l'instance

Le fichier recovery.conf

On peut trouver un fichier exemple sur le github (ici).
restore_command = 'cp /var/lib/postgresql/archive/%f %p'
recovery_target_time = '2017-02-15 15:27:53 CET'
Un petit redémarrage et taadaa! Ça marche!

Pour en savoir plus

La doc PostgreSQL décrit bien les différentes étapes ici: https://www.postgresql.org/docs/9.6/static/backup.html