Migrer une base postgresql vers un nouveau serveur

L'opération est particulièrement délicate, notamment avec POSTGIS : il n'est pas impossible que vous soyez obligé de reprendre une partie des scripts, en supprimant des contraintes POSTGIS (bascule de la version 1 de Posgtis vers la version 2).

Principe général :

  • sauvegarde depuis l'ancien serveur
  • restauration dans le nouveau
  • attribution des droits (s'ils ont évolué).

La sauvegarde s'effectue avec pg_dump, la restauration avec pg_restore ou psql (selon le format des fichiers).

Cas général

pg_dump -Fc -b -O -x base > fichier.db

Dans ce cas de figure, les droits ne sont en principe pas transférés (-O et -x) : vous devrez les repositionner ensuite.

Pour restaurer :

dans psq:

create database base;

puis, en ligne de commande :

pg_restore -d base -Fc fichier.db

Sauvegarde séparée de la structure et des données

La structure des tables est sauvegardée en fichier texte, pour pouvoir être adaptée le cas échéant (des problèmes peuvent survenir sur les contraintes d'intégrité POSTGIS, soit sur les types d'objets, soit sur les SRID : il vous faudra supprimer ces contraintes avant de pouvoir importer vos données) :

pg_dump -s -O -x base > base_structure.sql

Une fois la base de données créée, pour exécuter le script :

psql -f base_structure.sql base

Sauvegarde-restauration d'une seule table

Si vous avez un souci pour intégrer une table (structure créée), vous avez intérêt à gérer l'import manuellement (problème rencontré avec une table contenant deux colonnes POSTGIS). Pour cela :

pg_dump -Fc -a -t table > base_table.db
pg_restore -Fc -a -d base -t table base_table.db

Attribuer les droits d'accès

Pour donner les droits, consultez les pages : changer le propriétaire (owner) d'une base postgresql et Donner les droits d'accès à un schéma postgresql