Pg_dumpを使用してRDSインスタンスに接続するにはどうすればよいですか?
これはインスタンスのエンドポイントです。
<long public dns thing>:5432
だから私はこのコマンドを実行しています:
pg_dump -h <long public dns thing> -p 5432 -f dump.sql
これを取得する:
pg_dump: [archiver (db)] connection to database "brendan" failed:
could not connect to server: Connection refused
Is the server running on Host "<long public dns thing>"
(<IP address>) and accepting TCP/IP connections on port 5432?
これはAmazonのトラブルシューティングアドバイスです。
Amazon RDS PostgreSQL DBインスタンスに接続できません
PostgreSQL DBインスタンスに接続しようとする際の最も一般的な問題は、DBインスタンスに割り当てられたセキュリティグループに不正なアクセスルールがあることです。デフォルトでは、DBインスタンスはアクセスを許可しません。セキュリティグループを介してアクセスが許可されます。アクセスを許可するには、状況に応じた特定の入力および出力ルールを使用して独自のセキュリティグループを作成する必要があります。 DBインスタンスのセキュリティグループの作成の詳細については、セキュリティグループの作成を参照してください。
最も一般的なエラーは、サーバーに接続できなかったことです:接続がタイムアウトしました。このエラーを受け取った場合は、ホスト名がDBインスタンスのエンドポイントであり、ポート番号が正しいことを確認してください。 DBインスタンスに割り当てられたセキュリティグループに、ローカルファイアウォールを介したアクセスを許可するために必要なルールがあることを確認します。
Pg_dumpからセキュリティグループを指定する方法はありますか?もしそうなら、私はsshするときにsshキーが必要な方法でそのローカルコピーを取得する必要がありますか?
リモートでpg_dumpを使用しようとするのは間違いですか?代わりにインスタンスにsshするだけなのか、それともまったく別のことをするべきなのか?
ステップ1:コンピューターのIPアドレスがホワイトリストに登録されているセキュリティグループをAWSで作成します。
ステップ2:そのセキュリティグループを接続するデータベースインスタンスに追加します。
ステップ3:pg_dumpを実行します。 -Uコマンドでユーザー名を指定してください(@LHWizardに感謝)。この場合、私のものは「postgres」ではなかったので、一般的にはそれを見つけるにはawsを調べる必要があると思います。また、データベースの名前を指定してください:コマンドラインツールの中には-dスイッチがありますが、pg_dumpの使用法を確認する場合:
Usage:
pg_dump [OPTION]... [DBNAME]
正式な議論であることがわかります。したがって、コマンド全体(私の場合)は次のとおりです。
pg_dump -h <public dns> -U <my username> -f dump.sql <name of my database>
ポート番号を指定する必要はないことに注意してください-ポート5432がpostgresのポートだからだと思います。