Mover la base de datos postgresql de un servidor a otro

9

He creado una base de datos (espacial) en mi casa que es de varios gigabytes y quiero mover toda la base de datos, ya que es de una computadora de mi computadora de trabajo.

Nada fanático, crearé una nueva instancia de postgresql / postgis db en mi computadora de trabajo. Los usuarios de db pueden o no tener el mismo nombre en ambas computadoras.

¿Es posible? ¿De qué debo tener cuidado? ¿Cómo puedo hacerlo sin dolor?

Estoy usando postgresql v9.1.5 con extensión postgis. Ubuntu12.04 (kernel 3.2.0-31)

usuario528025
fuente
Vea este hilo similar en StackOverflow, copiando la base de datos PostgreSQL a otro servidor .
Basil Bourque

Respuestas:

11

Puede ejecutar un volcado de la base de datos:

pg_dump yourdatabase | gzip -9 > outfile.sql.gz

y luego importar de nuevo a PostgreSQL en su computadora de trabajo. Tomará bastante tiempo y el archivo resultante, incluso si está comprimido, puede estar en el rango de gigabytes, pero debe ser lo suficientemente pequeño como para contenerlo en una llave USB.

En su computadora de trabajo, cree la nueva base de datos y cargue el volcado:

zcat outfile.sql.gz | psql yournewdatabase

Si tiene una conexión rápida (o puede tomarse el tiempo), incluso puede transferir la base de datos a través de Internet a través de una conexión SSH encriptada o herramientas como rsync.

LSerni
fuente
1
¿Qué pasa con los privilegios de usuario / grupo? en mi casa tengo, por ejemplo, usuario1 pero en el trabajo su usuario2. ¿Importa?
2
No debería Sin embargo, por supuesto, debe configurar el usuario correcto en su aplicación. Dado que es la PC de su hogar, intente cambiar el nombre de usuario1 a usuario2 y verificar que todo funcione, antes de descargar. Entonces la transferencia debe ser sin problemas.
3
Use pg_dumpall para un volcado de los roles de la base de datos.
Frank Heikens
1
para poder volcar la base de datos, debe instalar la misma versión postgresql que en el servidor anterior, consulte wiki.postgresql.org/wiki/Apt
rubo77
2

pg_dumpall es la forma más segura de hacer esto. De todos modos, recomendaría tomar un dumpall antes de la migración. Sin embargo, el gran problema es que puede llevar un tiempo restaurarlo si es grande.

También puede copiar el directorio de datos, preferiblemente después de detener su servidor (puede usar pg_start_backup () en lugar de detenerse pero ver todos los documentos sobre la recuperación del punto de tiempo antes de ir a esa ruta. Esa ruta permitiría un tiempo de inactividad casi cero sin embargo, tenga en cuenta que solo puede hacer esto si la arquitectura del sistema operativo y la CPU es la misma en ambos sistemas. No puede pasar de Windows a Linux o de i686 a x86-64 de esta manera. Compruebe también las versiones del kernel del sistema operativo en orden para asegurarse de que los sistemas sean compatibles.

Chris Travers
fuente