
Ich habe einen PostgreSQL 11-Server mit Nur-SSL-Verbindungen (es handelt sich um den „Managed PostgreSQL“-Dienst meines Cloud-Anbieters).
In der Dokumentation psql
sollte die Verbindung zu diesem Server folgendermaßen aussehen:
psql "host=xxx.mdb.yandexcloud.net \
port=6432 \
sslmode=verify-full \
dbname=<database> \
user=<user>\
target_session_attrs=read-write"
Mit diesem Befehl kann ich erfolgreich eine Verbindung zum Server herstellen. Der nächste Schritt besteht also darin, meine Datenbank aus dem Backup auf diesem Server wiederherzustellen.
Zuvor habe ich diesen Befehl verwendet, um das Backup auf meinem alten PostgreSQL-Server wiederherzustellen:
pg_restore -d <database> -O -c -v -x <file>.dump
Also habe ich versucht, Folgendes zu tun:
pg_restore "host=xxx.mdb.yandexcloud.net \
port=6432 \
sslmode=verify-full \
dbname=<database> \
user=<user>\
target_session_attrs=read-write" -d <database> -O -c -v -x <file>.dump
und habe diesen Fehler erhalten:
pg_restore: too many command-line arguments (first is "<file>.dump")
Try "pg_restore --help" for more information.
Ich muss es also nur richtig einstellen pg_restore
, weiß aber nicht wie.
Antwort1
Versuchen Sie es folgendermaßen:
PGTARGETSESSIONATTRS=read-write PGSSLMODE=verify-full pg_restore -Fd \
-v -h <host(s)> -p6432 -U<user> -d <db> --single-transaction --no-privileges <backup folder>
Stellen Sie jedoch sicher (wenn Sie dies außerhalb von YandexCloud ausführen), dass dem aktuellen Master-Host eine öffentliche IP zugewiesen ist.