mover grandes bases de datos PostgreSQL / PostGIS

8

Necesito mover y actualizar una base de datos PostGIS muy grande (~ 320 GB) del servidor1 (PostgreSQL 9.1, PostGIS 1.5) al servidor2 (PostgreSQL 9.3, PostGIS 2.1).

El proceso de actualización está bien documentado . El problema es que no tengo suficiente espacio en el servidor1 para volcar el archivo allí, sumarlo , luego copiarlo al servidor2 y verificar las sumas. Lo intenté:

  • Canalizar el volcado del servidor1 al servidor2 usando nc.
  • Escribir un archivo de volcado directamente en un sistema de archivos server2 que se monta en server1 usando sshfs.

En ambas ocasiones, el archivo de volcado parece haberse dañado. pg_restorerompió en diferentes lugares con errores como este:

pg_restore: [compress_io] could not uncompress data: incorrect data check

¿Alguien puede sugerir una mejor manera de hacer este movimiento y actualizar?

ACTUALIZACIÓN: Probé NFS (y le di a SSHFS otro intento). Está claro que estos sistemas de archivos remotos no pueden transferir de manera confiable esta cantidad de datos . Faltan visiblemente bloques en el archivo SQL resultante, lo que provoca errores de sintaxis como este durante la importación:

ERROR:  invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = n.srid;"
kontextify
fuente
La segunda opción parece buena, pero ¿por qué no usas NFS? Quizás haya una pequeña interrupción que sshfs no maneja bien. 320Gb es un archivo bastante grande.
Marco
1
¿Comprar un disco más grande? 1Tb cuesta casi nada en estos días.
Colin 't Hart
Resulta que NFS es tan poco confiable como SSHFS para transferir esta cantidad de datos. Pregunta de actualización
kontextify

Respuestas:

7

Recomendaría descargar la base de datos 9.1 de su nuevo servidor 9.3 de esta manera:

pg_dump -h remoteserver -U remoteuser remotedbname -Fc -f my_old_server_backup.dump

Recomiendo usar el 9.3 pg_dumpya pg_dumpque siempre es compatible con versiones anteriores, pero no es compatible con versiones anteriores. En otras palabras, el más nuevo pg_dumpse encargará de cualquier cambio de sintaxis que el nuevo servidor requiera y que la utilidad anterior no conozca.

Asegúrese de asegurarse de que su pg_hba.confy listen_addressesen postgresql.confestán configurados para permitirle conectarse y volcar de forma remota también.

Si desea probar un volcado y restaurar en un solo paso, también puede intentar esto:

pg_dump -h remotehost -U remoteuser remotedbname | psql -U localuser localdbname

Espero que ayude. =)

Kassandry
fuente
El "volcado y restauración en un solo paso" probablemente no funcionará debido a las diferencias entre las versiones de PostGIS, pero ejecutar el volcado de forma remota desde el servidor receptor y restaurarlo funcionó. Esto es claramente mejor que usar sistemas de archivos de red. Gracias, ahora tengo una base de datos en funcionamiento.
kontextify
¿Es ese un proceso performativo? Me parece que tomará algunos días completarlo. ¿Entonces pgdump creará un archivo de volcado con ~ 300GB si no uso una copia de seguridad remota de servidor a servidor?
deFreitas