pg_dump postgresql ssh remote-server pg-dump

postgresql - pg_dump base de datos postgres desde un servidor remoto



backup postgresql (3)

Puede conectarse con ssh a su servidor remoto, con la conexión de la llamada pg_dump y enviar la salida a la salida estándar de la máquina local.

ssh user@remote_machine "pg_dump -U dbuser -h localhost -C --column-inserts" / >> backup_file_on_your_local_machine.sql

Edición: arreglado un error tipográfico.

Estoy tratando de pg_dump una base de datos SQL en un servidor remoto en nuestra DMZ. Hay 2 problemas.

1) no queda mucho espacio en el servidor remoto, por lo que el comando normal se ejecuta para hacer una copia de seguridad local de la base de datos pg_dump -C database > sqldatabase.sql.bak no funcionará debido a problemas de espacio.

2) Tampoco puedo ejecutar la otra versión del comando pg_dump para volcar la base de datos del servidor remoto al servidor local usando:

pg_dump -C -h remotehost -U remoteuser db_name | psql localhost -U localuser db_name

ya que el servidor está en nuestra DMZ y el puerto 5432 está bloqueado. Lo que estoy buscando es si es posible pg_dumpear la base de datos y guardarla inmediatamente (ssh o alguna otra forma) como un archivo en un servidor remoto. Lo que estaba intentando era: pg_dump -C testdb | ssh [email protected] | > /home/admin/testdb.sql.bak pg_dump -C testdb | ssh [email protected] | > /home/admin/testdb.sql.bak

¿Alguien sabe si lo que estoy tratando de lograr es posible?


Puede intentar volcar parte de la tabla a un archivo en su máquina local como este (suponga que su máquina local tiene psql instalado):

psql -h ${db_host} -p 5432 -U ${db_user} -d ${db_name} / -c "/copy (SELECT * FROM my_table LIMIT 10000) to ''some_local_file.csv'' csv;"

Y puede importar el csv exportado a otro db más adelante así:

COPY my_table FROM ''/path/to/some_local_file.csv'' WITH (FORMAT csv);


Se ha mencionado una posible solución, tubería a través de ssh.

También puede hacer que su servidor DB escuche en la dirección de entrada pública, agregar una entrada de hostsl para su máquina de copia de seguridad a pg_hba.conf, tal vez configurar un certificado de cliente por seguridad, y luego simplemente ejecutar el volcado en la máquina cliente / copia de seguridad con pg_dump -h dbserver.example.com ...

Esto es más sencillo para las copias de seguridad desatendidas.

Para la configuración de la conexión (sslmode), consulte también las variables de entorno compatibles .