
У меня есть сервер PostgreSQL 11 с подключениями только по SSL (это услуга «Managed PostgreSQL» от моего облачного провайдера)
В документации psql
подключение к этому серверу должно быть таким:
psql "host=xxx.mdb.yandexcloud.net \
port=6432 \
sslmode=verify-full \
dbname=<database> \
user=<user>\
target_session_attrs=read-write"
С помощью этой команды я могу успешно подключиться к серверу. Итак, следующим шагом будет восстановление моей базы данных из резервной копии на этом сервере.
Ранее я использовал эту команду для восстановления резервной копии на моем старом сервере postgreSQL:
pg_restore -d <database> -O -c -v -x <file>.dump
Итак, я попытался сделать это:
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
и получил эту ошибку:
pg_restore: too many command-line arguments (first is "<file>.dump")
Try "pg_restore --help" for more information.
Так что мне нужно все это правильно настроить pg_restore
, но я не знаю как.
решение1
Попробуйте так:
PGTARGETSESSIONATTRS=read-write PGSSLMODE=verify-full pg_restore -Fd \
-v -h <host(s)> -p6432 -U<user> -d <db> --single-transaction --no-privileges <backup folder>
Но убедитесь (если вы запускаете это извне YandexCloud), что текущему главному хосту назначен публичный IP-адрес.