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;"

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. =)


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.