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.