PostgreSQL: migrer une base de données d’un serveur à l’autre

Tous développements (ou presque) passent un jour en production. Si le déploiement des sources est relativement trivial, il peut être un peu plus ardu de migrer une base de données d’un serveur de développement à un serveur de production (dans certains cas).

Pour migrer une base de données d’un serveur PostgreSQL, il y’a 2 méthodes (mais j’en présenterai 3 \o/):

  • le passage par un fichier temporaire d’exportation,
  • l’export-import directement d’un serveur à l’autre,
  • l’export d’un serveur et l’import sur l’autre serveur en utilisant 2 sessions SSH.

Utilisation d’un fichier temporaire d’exportation

Sur le serveur source, on fait un dump de la base de données:

pg_dump -C dbname -f db.dump

Il suffit de transférer le fichier du serveur source vers le serveur de destination par le moyen préféré.

Sur le serveur destination, on insère notre fichier d’exportation:

pg_restore -C -d dbname db.dump

 

Export-import directement d’un serveur à l’autre

Depuis le serveur source, on fait un dump pour l’insérer dans le serveur de destination:

pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname

ou bien dans l’autre sens, depuis le serveur de destination, on fait un dump du serveur source pour l’insérer localement:

pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname

 

Export d’un serveur et l’import sur l’autre serveur en utilisant 2 sessions SSH

Depuis le serveur source:

pg_dump -C dbname | bzip2 | ssh remoteuser@remotehost "bunzip2 | psql dbname"

Note: cette solution implique d’avoir un accès SSH sur les 2 serveurs.

0 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *