我有一台仅支持 SSL 连接的 PostgreSQL 11 服务器(这是我的云提供商提供的“托管 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。