Copie la base de datos PostgreSQL de un servidor remoto


11

Cuando estaba usando MySQL, podía ejecutar un comando que SSH en mi servidor y copiar la base de datos a mi máquina local.

ssh -t remoteserver 'mysqldump --compress -u dbuser --password = "contraseña" db_name' | / usr / local / mysql / bin / mysql -u root --password = "contraseña" local_db_name

¿Cómo puedo hacer lo mismo con PostgreSQL?

Respuestas:


15

Si el servidor de base de datos toma conexiones de base de datos de su host (generalmente en el puerto 5432), entonces no necesita usar SSH. En este caso, debe hacer lo siguiente:

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user

Si solo puede conectarse a su base de datos desde el propio host, debe agregar la lógica SSH desde su ejemplo MySQL.

Con -C, obtendrá un CREATE DATABASEcomando al comienzo del volcado para que no tenga que crearlo usted mismo. El comando anterior le pedirá una contraseña dos veces a menos que la almacene en un archivo .pgpass (suponiendo que esté en Linux / Unix). Además, la conexión local puede ser diferente si su base de datos no escucha en TCP (en este caso, simplemente omita la -h localhostparte).

Para obtener más detalles y opciones, consulte la documentación de pg_dump .


significa que necesitas tener la misma contraseña en ambos servidores, ¿verdad?
Florian Heigl

1
@FlorianHeigl No.
dezso

Para cualquiera que lea esto en el futuro: ingrese la contraseña para el primer DB (remoto), presione enter, escriba la contraseña para su usuario de DB localhost, presione enter. El hecho de que solicitara ambas contraseñas (y que UNIX nunca muestra las contraseñas mientras las escribes) también me confundió.
AleksandrH
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.