Comment migrer mes données postgres de 8.4 à 9.1?


27

J'ai mis à niveau ma machine de développement Ubuntu de 11.04 à 11.10. Dans le processus, mes postgres ont également été mis à niveau de 8.4 à 9.1.

Mais il me semble avoir perdu toutes mes données. Si je regarde, je peux voir que mes données pour 8.4 sont dans le dossier /var/lib/postgres/8.4/mainet ma nouvelle base de données est dans /var/lib/postgres/9.1/main.

Quelle est la meilleure façon de migrer mes données vers la nouvelle version? Puis-je simplement copier les fichiers?

Réponses:


27
su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Au début, cela n'a pas fonctionné pour moi pour deux raisons. Tout d'abord, postgresql-8.4 avait été désinstallé à un moment donné, j'ai donc dû le réinstaller:

sudo apt-get install postgresql-8.4

Ensuite, je devais entrer dans le 8.4 postgresql.confet passer max_connectionsà 10. Ensuite, cela a fonctionné. Vous devriez pouvoir trouver le fichier conf à/etc/postgresql/8.4/main/postgresql.conf


Sur un ordinateur, les trois premières lignes étaient suffisantes. De l'autre, j'ai dû réinstaller 8.4 pour le faire fonctionner, comme vous l'avez dit. Merci de votre aide.
— nathanvda

Il convient de noter que le script "pg_upgradecluster" ne gère pas le cas où l'utilisateur de la base de données doit être fourni. (Si c'est le cas, je ne sais pas comment le fournir.)
— Pointy

Si vous obtenez Error: specified cluster is not runningen réessayant après avoir changé max_connections, utilisez pg_ctlcluster 8.4 main start.
— Skippy le Grand Gourou

La réduction max_connectionsn'a pas fonctionné pour moi. Comme solution alternative fournie par le message d'erreur, j'ai réduit shared_buffersà 20 Mo (au lieu de 200 Mo), ce qui a fonctionné pour moi.
— Serrano

4

Après la mise à niveau vers 11.10, PostgreSQL 9.1 a été installé, mais la version en cours d'exécution était 8.4.

J'ai essayé:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Il a signalé l'erreur:

Stopping old cluster...
pg_ctl: servidor não desligou
Error: Could not stop old cluster

Donc, dans une autre fenêtre:

$ sudo service postgresql-8.4 stop
 * Stopping PostgreSQL 8.4 database server                               [ OK ] 
jgr@cagliari:~$ sudo service postgresql-8.4 start
 * Starting PostgreSQL 8.4 database server                               [ OK ] 

Et puis encore:

pg_upgradecluster 8.4 main

Des erreurs liées à pgRouting ont été signalées. Cela a pris un certain temps (toute la nuit!), Mais par la suite, la base de données a été mise à niveau vers la version 9.1. PostGIS a également été mis à niveau vers 1.5.3.


Pour info, j'ai trouvé qu'en faisant un "du -hs" dans le répertoire /var/lib/postgresql/9.1 et en le comparant ensuite avec la sortie de la même commande dans /var/lib/postgresql/8.4/, j'ai trouvé que je pouvais évaluer combien a été copié en fonction de la taille de sortie de cette commande.
— Joe J

Je sais que ce n'est pas la question qui est discutée. Mais je suis tombé sur le même problème que vous avez décrit. La raison pour laquelle pg_upgradecluster n'a pas pu arrêter l'ancien cluster était parce qu'une instance de Tomcat utilisait les connexions et Postgres ne pouvait pas les fermer. J'espère que cela aide quelqu'un.
— bplayer

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.