Come posso migrare i miei dati postgres da 8.4 a 9.1?


27

Ho aggiornato la mia macchina di sviluppo Ubuntu dall'11.04 all'11.10. Nel processo anche il mio postgres è stato aggiornato da 8.4 a 9.1.

Ma mi sembra di aver perso tutti i miei dati. Se guardo, posso vedere che i miei dati per 8.4 sono nella cartella /var/lib/postgres/8.4/maine il mio nuovo database è in /var/lib/postgres/9.1/main.

Qual è il modo migliore per migrare i miei dati alla nuova versione? Posso semplicemente copiare i file?

Risposte:


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

All'inizio questo non ha funzionato per me per due motivi. In primo luogo, postgresql-8.4 era stato disinstallato ad un certo punto, quindi ho dovuto reinstallarlo:

sudo apt-get install postgresql-8.4

Quindi ho dovuto andare su 8.4 postgresql.confe passare max_connectionsa 10. Quindi ha funzionato. Dovresti essere in grado di trovare il file conf in/etc/postgresql/8.4/main/postgresql.conf


Su un computer erano sufficienti le prime tre righe. Dall'altro ho dovuto reinstallare 8.4 per farlo funzionare, come hai detto. Grazie per l'aiuto.
— nathanvda,

Va notato che lo script "pg_upgradecluster" non gestisce il caso in cui l'utente del database deve essere fornito. (In tal caso, non riesco a capire come fornirlo.)
— Pointy,

Se ricevi Error: specified cluster is not runningquando riprovi dopo averlo modificato max_connections, usa pg_ctlcluster 8.4 main start.
— Skippy le Grand Gourou,

La riduzione max_connectionsnon ha funzionato per me. Come soluzione alternativa fornita dal messaggio di errore, ho ridotto shared_buffersa 20 MB (da 200 MB), che ha funzionato per me.
— Serrano,

4

Dopo l'aggiornamento a 11.10, è stato installato PostgreSQL 9.1, ma la versione in esecuzione era 8.4.

Ho provato:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Ha segnalato l'errore:

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

Quindi, in un'altra finestra:

$ 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 ] 

E poi ancora:

pg_upgradecluster 8.4 main

Sono stati segnalati errori relativi a pgRouting. Ci è voluto un po 'di tempo (tutta la notte!), Ma in seguito il database è stato aggiornato a 9.1. Anche PostGIS è stato aggiornato alla 1.5.3.


Cordiali saluti, ho scoperto che facendo un "du -hs" nella directory /var/lib/postgresql/9.1 e poi confrontandolo con l'output dello stesso comando in /var/lib/postgresql/8.4/, ho scoperto che potevo valutare quanto è stato copiato in base alla dimensione dell'output di quel comando.
— Joe J,

So che questa non è la domanda in discussione. Ma ho riscontrato lo stesso problema che hai descritto. Il motivo per cui pg_upgradecluster non è riuscito a fermare il vecchio cluster era perché un'istanza Tomcat utilizzava le connessioni e Postgres non riusciva a chiuderle. Spero che questo aiuti qualcuno.
— bplayer

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.