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?

wyred
fuente

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 .

dezso
fuente
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