
私は 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 が割り当てられていることを確認してください。