it-swarm.com.de

pg_dump Postgres-Datenbank vom Remote-Server

Ich versuche, eine SQL-Datenbank auf einem Remote-Server in unserer DMZ zu pg_dump. Es gibt 2 Probleme. 

1) Auf dem Remote-Server ist nicht mehr viel Speicherplatz vorhanden. Der normale Befehl zum lokalen Sichern der Datenbank pg_dump -C database > sqldatabase.sql.bak funktioniert jedoch aufgrund von Speicherplatzproblemen nicht. 

2) Ich kann auch nicht die andere Version des Befehls pg_dump ausführen, um die Datenbank vom Remote-Server auf den lokalen Server zu kopieren. 

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

der Server befindet sich in unserer DMZ und der Port 5432 ist blockiert. Was ich suche, ist, ob es möglich ist, die Datenbank zu pg_dumpen und sie sofort (ssh oder ein anderes Formular) als Datei auf einem Remote-Server zu speichern. Was ich versuchte, war: pg_dump -C testdb | ssh [email protected] | > /home/admin/testdb.sql.bak 

Weiß jemand, ob das, was ich erreichen möchte, möglich ist? 

27

Sie können mit ssh eine Verbindung zu Ihrem Remote-Server herstellen, mit dem Aufruf pg_dump verbinden und die Ausgabe an stdout des lokalen Computers zurücksenden.

ssh [email protected]_machine "pg_dump -U dbuser -h localhost -C --column-inserts" \
 >> backup_file_on_your_local_machine.sql

Edit: ein Tippfehler behoben.

57
OkieOth

Sie können versuchen, einen Teil der Tabelle in eine Datei auf Ihrem lokalen Computer zu kopieren (dies setzt voraus, dass auf Ihrem lokalen Computer psql installiert ist):

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;"

Und Sie können die exportierte CSV-Datei später in eine andere Datenbank importieren:

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

Eine mögliche Lösung - Pipe durch ssh - wurde erwähnt.

Sie können Ihren DB-Server auch dazu veranlassen, die öffentliche Inet-Adresse abhören zu lassen, der pg_hba.conf einen Hostssl-Eintrag für Ihre Sicherungsmaschine hinzufügen, möglicherweise ein Clientzertifikat für die Sicherheit konfigurieren und dann einfach den Speicherauszug auf der Client-/Sicherungsmaschine mit pg_dump -h dbserver.example.com ...

Dies ist bei unbeaufsichtigten Sicherungen einfacher.

Zur Konfiguration der Verbindung (sslmode) siehe auch die unterstützten Umgebungsvariablen .

2
Str.

lassen Sie uns mit pg_dump eine Sicherung aus der entfernten Postgresql-Datenbank erstellen:

pg_dump -h [Host address] -Fc -o -U [database user] <database name> > [dump file]

später konnte es auf demselben Remote-Server wiederhergestellt werden:

Sudo -u postgres pg_restore -C mydb_backup.dump

Ex:

pg_dump -h 67.8.78.10 -Fc -o -U myuser mydb > mydb_backup.dump

komplett (alle Datenbanken und Objekte)

pg_dumpall -U myuser -h 67.8.78.10 --clean --file=mydb_backup.dump

wiederherstellen von pg_dumpall --clean:

psql -f mydb_backup.dump postgres #it doesn't matter which db you select here

Kopiert von: https://codepad.co/snippet/73eKCuLx

1
Kishore Relangi