¿Cómo migro mis datos de postgres de 8.4 a 9.1?

27

He actualizado mi máquina de desarrollo ubuntu de 11.04 a 11.10. En el proceso, mis postgres también se actualizaron de 8.4 a 9.1.

Pero parece que he perdido todos mis datos. Si miro, puedo ver que mis datos para 8.4 están en la carpeta /var/lib/postgres/8.4/mainy mi nueva base de datos está en /var/lib/postgres/9.1/main.

¿Cuál es la mejor manera de migrar mis datos a la nueva versión? ¿Puedo copiar los archivos?

nathanvda
fuente

Respuestas:

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

Al principio esto no funcionó para mí por dos razones. En primer lugar, postgresql-8.4 se había desinstalado en algún momento, por lo que tuve que reinstalarlo:

sudo apt-get install postgresql-8.4

Luego tuve que ir al 8.4 postgresql.confy cambiar max_connectionsa 10. Luego funcionó. Debería poder encontrar el archivo conf en/etc/postgresql/8.4/main/postgresql.conf

Marconio
fuente
En una computadora, las tres primeras líneas eran suficientes. Por otro lado, tuve que reinstalar 8.4 para que funcione, como dijiste. Gracias por tu ayuda.
nathanvda
Cabe señalar que el script "pg_upgradecluster" no maneja el caso en el que se debe proporcionar al usuario de la base de datos. (Si lo hace, seguro que no puedo entender cómo proporcionarlo).
Pointy
Si aparece Error: specified cluster is not runningal intentar nuevamente después de haber cambiado max_connections, úselo pg_ctlcluster 8.4 main start.
Skippy le Grand Gourou
Reducir max_connectionsno funcionó para mí. Como solución alternativa proporcionada por el mensaje de error, reduje shared_buffersa 20 MB (de 200 MB), lo que funcionó para mí.
Serrano
4

Después de actualizar a 11.10, se instaló PostgreSQL 9.1, pero la versión en ejecución era 8.4.

He intentado:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Informó el error:

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

Entonces, en otra ventana:

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

Y luego otra vez:

pg_upgradecluster 8.4 main

Se informaron errores relacionados con pgRouting. Tomó un tiempo (¡toda la noche!), Pero luego la base de datos se actualizó a 9.1. PostGIS también se actualizó a 1.5.3.

estibordo
fuente
Para su información, descubrí que haciendo un "du -hs" en el directorio /var/lib/postgresql/9.1 y luego comparando eso con la salida del mismo comando en /var/lib/postgresql/8.4/, descubrí que podía mida cuánto se ha copiado en función del tamaño de salida de ese comando.
Joe J
Sé que esta no es la pregunta que se está discutiendo. Pero me encontré con el mismo problema que tú describiste. La razón por la que pg_upgradecluster no pudo detener el clúster anterior fue porque una instancia de Tomcat estaba usando las conexiones y Postgres no podía cerrarlas. Espero que esto ayude a alguien.
bplayer