I'm trying to pg_dump a SQL database on a remote server in our DMZ. There are 2 problems.
1) there is n't a lot of space left on the remote server so the normal command run to locally backup the database
pg_dump -C database > sqldatabase.sql.bak
won't work due to space issues.
2) I also can't run the other version of pg_dump command to dump database from remote server to local server using:
pg_dump -C -h remotehost -U remoteuser db_name | psql localhost -U localuser db_name
as the server is in our DMZ and port 5432 is blocked. What I'm looking to see is if it is possible to pg_dump the database and immediatly save it (ssh or some other form) as a file to a remote server.
What I was trying was: pg_dump -C testdb | ssh admin@ourserver.com | > /home/admin/testdb.sql.bak
Does anyone know if what i am trying to achieve is possible?
One possible solution - pipe through ssh - has been mentioned.
You also could make your DB server listen on the public inet address, add a hostssl entry for your backup machine to pg_hba.conf, maybe configure a client certificate for security, and then simply run the dump on the client/backup machine with
pg_dump -h dbserver.example.com ...
This is simpler for unattended backups.
For the configuration of the connection (sslmode) see also the supported environment variables.
let's create a backup from remote postgresql database using pg_dump:
later it could be restored at the same remote server using:
Ex:
complete (all databases and objects)
restore from pg_dumpall --clean:
Copied from: https://codepad.co/snippet/73eKCuLx
You can try to dump part of the table to a file in your local machine like this (assume your local machine has
psql
installed):And you can import the exported csv into another db later like this:
You can connect with ssh to your remote server, do with the connect the pg_dump call and send the output back to stdout of local machine.
Edit: fixed a typo.